KnockoutJS - 对UI事件做出反应

时间:2011-09-12 16:38:23

标签: knockout.js

关于KnockoutJS的另一个完整的Noob问题我害怕......

我理解Observables功能,因为如果viewmodel发生了变化,那么绑定到viewmodel的UI元素也会发生变化以反映这一点。

因此UI正在对视图模型做出反应。

在我的应用程序中,要更改viewmodel,我需要对服务器进行AJAX调用。如何将该服务器请求绑定到UI中的更改。

通常我只使用jquery

$("[#HolidayDestination").change(function () {
    // Make Ajax call
});

我是否仍然继续以KnockoutJS的方式工作?

1 个答案:

答案 0 :(得分:3)

有几种方法可以处理这种情况,但基本的想法是,您希望AJAX请求的触发器来自对视图模型的更改。

如果您想根据对单个observable的更改触发AJAX请求,那么manual subscription是一个不错的选择。

如果要根据对多个可观察对象的更改来触发它,则可以将其包装在dependentObservable中。在这种情况下,dependentObservable甚至不需要返回值。你只是不会在你的UI中绑定它,它将纯粹用作触发器。

var trigger = ko.dependentObservable(function() {
    //access any observable that you want to trigger re-evaluation.  You don't even need to do anything with their values.
    valueOne();
    valueTwo();
    valueThree();

    //trigger AJAX
});