knockout.js是否公开模型上的更改事件?

时间:2012-11-16 20:10:53

标签: knockout.js

我想观看ViewModel对任何属性的任何更改。这可能与knockout.js有关吗?

2 个答案:

答案 0 :(得分:2)

Ryan Niemeyer在为您的Knockout视图模型实现通用脏标志方面做了很好的演练:

http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html

达到的基本方法是使用ko.toJSON来比较整个视图模型的JSON表示,以确定是否有任何属性值已经改变,这是简单而强大的,只要你记住,如果你的视图模型变得很大并且嵌套这可能会成为一项昂贵的操作。

答案 1 :(得分:1)

这段代码怎么样:

function subscribeToModelChange (viewModel)
{
    for (var prop in viewModel)
    {
        if (ko.isObservable (viewModel[prop])
            viewModel[prop].subscribe (function (newValue) { onModelChanged (viewModel[prop], newValue); });
    }
}

function onModelChanged (observable, newValue)
{
    alert ("Hooray!");
}

您将在视图模型中收到有关任何挖掘可观察对象的更改的通知。