我有一个具有多个可观察对象的对象。在计算机中有一种方法可以知道哪些可观察的变化,因此哪个observable触发了计算的?
提前谢谢你 马修
答案 0 :(得分:1)
如果没有详细说明您想要实现的目标,我会发布此信息,希望它可能有所帮助。
跟踪更改的一种简单方法是在要跟踪的可观察对象上使用.subscribe
方法。每次observable更新时,此方法都会触发。
self.myValue = ko.observable('initial value');
self.myValue.subscribe(function (item) {
alert('myValue has changed to: ' + item);
});
传入订阅功能的item
是可选的,因此您可以根据需要使用新值。
这是一个与计算机一起使用的简单示例:
<强> JS:强>
var viewModel = function () {
var self = this;
self.firstName = ko.observable('Mod');
self.lastName = ko.observable('dinu');
self.valueChanged = ko.observable('');
self.fullName = ko.computed(function () {
var val = '';
if (self.valueChanged() !== '') {
val = ' (' + self.valueChanged() + ' Changed)';
}
return self.firstName() + ' ' + self.lastName() + val;
});
self.firstName.subscribe(function () {
self.valueChanged('First Name');
});
self.lastName.subscribe(function () {
self.valueChanged('Last Name');
});
};
ko.applyBindings(new viewModel());
<强> HTML:强>
<div>
<label for="fname">First Name:</label>
<input id="fname" data-bind="value: firstName" />
</div>
<div>
<label for="lname">Last Name:</label>
<input id="lname" data-bind="value: lastName" />
</div>
<hr />
<div>Hello <span data-bind="text: fullName"></span></div>
<hr />
<div>Value Changed: <span data-bind="text: valueChanged"></span></div>