杜兰达尔,可观察的非辛格尔顿模块,没有明确地使它们成为可观察的
Durandal, observable non-singelton module without explicitly making them observables
我的html文件看起来像这样:
<section>
<h1>hei</h1>
<form class="form-inline" role="form">
<div class="form-group">
<input type="text" class="form-control" placeholder="name" data-bind="textInput: test">
</div>
<span data-bind="text: test">Search</span>
</form>
</section>
和我的JS文件,如下所示:
define(function () {
return function() {
var self = this;
self.test = 'blah';
self.activate = function() {
console.log('test');
}
};
});
这将生成页面并完美加载。我假设如果我更改输入框中的文本,跨度会相应地更新。不幸的是,情况并非如此,我不明白为什么不这样做。
但是,如果我将JS文件更改为以下内容:
define(['plugins/observable'], function (observable) {
return function() {
var self = this;
self.test = 'blah';
self.activate = function() {
console.log('test');
}
observable(self, 'test').subscribe(function (newValue) {
console.log("variable updated", self.test);
});
};
});
行为符合预期。如何配置 Durandal 以使 self.test 成为可观察的,而不必如此明确地进行?我以为这是一些内置的杜兰达尔特征?
似乎未启用可观察插件。请检查您的 Durandal 启动代码是否启用了它,就像文档中的这样:
define(['durandal/app'], function (app) {
app.configurePlugins({
observable: true // <-- This enabled the observable plugin
});
app.start().then(function () {
app.setRoot('shell');
});
});
请参阅此处的文档:http://durandaljs.com/documentation/Binding-Plain-Javascript-Objects.html
相关文章:
- knockoutjs可观察数组
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 尽管链接成功并已成功下载,但未找到NPM模块
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 从模块内部访问Express装载路径
- RequireJS向模块传递配置总是返回undefined
- Node.js正在更改应用程序以使用集群模块
- 在Meteor项目中安装并包含npm模块后出错
- 模块模式和这个
- 多次发射多个可观察器的问题
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 未激发路由的控制器属性上的观察者
- 找不到模块捆绑包
- JavaScript命名约定;静态“;类或模块
- 观察ES6模块属性
- 杜兰达尔多语言应用程序,页面/模块标题作为可观察的,动态更改文档.标题
- 杜兰达尔,可观察的非辛格尔顿模块,没有明确地使它们成为可观察的
- RxJS -可观察模块-抛出未定义