我有一個ViewModel在knockout.js個人信息。 我希望javascript認爲整個PersonViewModel如果只是該模型中的單個可觀察屬性發生更改而更改。如何通過改變其可觀察屬性來知道knockout.js ViewModel中的更改?
我也有另一個ViewModel的地址,我想它一樣。 作爲程序的最終用戶,我希望程序通過任何可觀察屬性中的更改來判斷哪個視圖模型發生了更改。
我可以使用「訂閱」,但這意味着我將不得不訂閱視圖模型中的每個可觀察對象,我不想這樣做。 形象地說,我想訂閱整個ViewModel,而不是每個可觀察的內部。 我該怎麼辦?
function PersonViewModel() {
this.firstName = ko.observable("John");
this.lastName = ko.observable("Doe");
this.middleName = ko.observable();
this.userName = ko.observable("Johnny");
this.dateOfBirth = ko.observable("12/12/2012");
this.firstName.subscribe(function() {
alert("fisrtName changed");
});
}
function AddressViewModel() {
this.city = ko.observable("@Model.City");
this.street = ko.observable("@Model.Street");
}
var pvm = new PersonViewModel();
var avm = new AddressViewModel();
var pNode = $("#personal-information").get(0);
var aNode = $("#address-information").get(0);
ko.applyBindings(pvm, pNode);
ko.applyBindings(avm, aNode);
我的HTML:
<div id="personal-information">
<input data-bind="value: firstName" type="text" >
<input data-bind="value: lastName" type="text" >
<input data-bind="value: middleName" type="text" >
<input data-bind="value: username" type="text" >
<input data-bind="value: dateOfBirth" type="text" >
</div>
任何幫助將不勝感激。 謝謝。
檢查這個帖子http://stackoverflow.com/questions/10622707/detecting-change-to-knockout-view-model – Agalo