使用Knockout,如何根据可观察值的任意值触发函数?

mar*_*ike 2 knockout.js

我是Knockout的新手,虽然我之前使用过一个可观察的模式库,但我不知道如何设置一个函数来观察ViewModel中的值并在该值发生变化时触发.

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

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

任何帮助表示赞赏!

Joh*_*les 7

是的,您可以显式订阅可观察对象.

此处提供了文档,搜索显式订阅observables.

你会做的事情如下:

function ViewModel() {
  this.problem = ko.observable();
  this.problem.subscribe(function(newValue) {
    if (newValue === 'other') {
      // trigger modal
    }
  });
}
Run Code Online (Sandbox Code Playgroud)