我想观察 ViewModel 对任何属性的任何更改。这可以通过 knockout.js 实现吗?
问问题
513 次
2 回答
2
Ryan Niemeyer 对为您的 Knockout 视图模型实现通用脏标志进行了出色的演练:
http://www.knockmeout.net/2011/05/creating-smart-dirty-flag-in-knockoutjs.html
得到的基本方法是使用 ko.toJSON 来比较整个视图模型的 JSON 表示,以确定是否有任何属性值发生了变化,这种方法简单而强大,只要您记住,如果您的视图模型变大并且嵌套这可能会成为一项昂贵的操作。
于 2012-11-16T21:19:56.380 回答
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!");
}
您将收到有关视图模型中任何可观察到的淘汰赛更改的通知。
于 2012-11-16T20:46:08.590 回答