2

我是 Knockout 的新手,尽管我以前使用过可观察模式库,但我不知道如何设置函数来观察 ViewModel 中的值并在该值更改时触发。

情况是这样的:当下拉列表的值为“其他”时,我希望启用模式弹出窗口。我正在使用 Twitter 引导程序“下拉列表”(实际上是一个锚点列表),每个锚点都click绑定到 ViewModel 上的一个名为setDetail. setDetail设置名为 的可观察属性的值problem

我的想法是放一个函数来观察的值,problem以保持逻辑分离。有没有办法做到这一点,或者我应该把代码放在setDetail函数中?

任何帮助表示赞赏!

4

2 回答 2

7

是的,您可以显式订阅 observable。

文档可在此处获得,搜索 Explicitly subscribing to observables。

你会做类似的事情:

function ViewModel() {
  this.problem = ko.observable();
  this.problem.subscribe(function(newValue) {
    if (newValue === 'other') {
      // trigger modal
    }
  });
}
于 2012-06-11T09:58:14.760 回答
1

给定HTML,这是一种方法

<div> 
    <select data-bind="options: dropdownOptions, selectedOptions: problem" ></select>        
</div>

​</p>

和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());
​

或小提琴:http: //jsfiddle.net/keith_nicholas/pb5ja/2/

于 2012-06-11T10:11:51.973 回答