如何获取下一个对象的更改事件?
$(function () {
var Data = {
id: ko.observable(15),
name: ko.observable('my name'),
status: ko.observable('status')
}
var ClickCounterViewModel = function () {
var me = this;
me.Model = ko.observable(Data);
me.change = ko.computed(function () {
var m = me.Model();
console.log(m.status());
});
};
ko.applyBindings(new ClickCounterViewModel());
});
我从以下网站获取对象数据:
ko.mapping(AnyInitData, {}, Data);
模型将所有属性都视为可观察,但如果有任何值被更改,我想知道这一点。 它可以通过ko.computed完成,但我有很多属性,并且不会这样做。
如果状态已更改,此示例控制台仅输出'status',但如果更改了属性'name'则不执行任何操作。
对不起,我的英文。
答案 0 :(得分:2)
可能我的解决方案不是最合适或最优雅的方式,但是,如果您在计算变量内部计算可观察量,则每次变量变化时都会调用它。例如:
me.change = ko.computed(function () {
var m = me.Model();
alert('something changed');
m.id(),m.name(),m.status();
});
如果你有很多属性,你可以遍历模型:
me.change = ko.computed(function () {
var m = me.Model();
alert('something changed');
for (var key in me.Model()) {
var obj = me.Model()[key];
if( ko.isObservable(obj)){
obj();
}
}
});
你也可以考虑 1.在Model内递归循环 2.多次阻止循环。 (它每次变量都会循环变化。你可以把计数器做一次。)