我是Knockout的新手,虽然之前我曾使用过一个可观察的模式库,但我不知道如何设置一个函数来观察ViewModel中的值,并在该值发生变化时触发。
情况是这样的:
当下拉列表的值为“other”时,我想要启用模态弹出窗口。我正在使用Twitter引导程序“下拉列表”(这实际上是一个锚点列表),每个锚点都有一个click
绑定到ViewModel上名为setDetail
的函数。 setDetail
设置名为problem
的可观察属性的值。
我的想法是设置一个函数来观察problem
的值,以保持逻辑分离。有没有办法做到这一点,还是应该将代码放在setDetail
函数中?
感谢任何帮助!
答案 0 :(得分:7)
是的,您可以明确订阅一个可观察的。
文档为available here,搜索显式订阅observables。
你会做的事情如下:
function ViewModel() {
this.problem = ko.observable();
this.problem.subscribe(function(newValue) {
if (newValue === 'other') {
// trigger modal
}
});
}
答案 1 :(得分:1)
这是一种方法,给定HTML
<div>
<select data-bind="options: dropdownOptions, selectedOptions: problem" ></select>
</div>
和javascript ..
var ViewModel = function() {
var self = this;
this.problem = ko.observable();
this.dropdownOptions = ko.observableArray(["1","2","3","other"]);
this.problem.subscribe((function(selectedOption) {
if(selectedOption == "other") {
alert(self.problem());
}
}));
}
ko.applyBindings(new ViewModel());