我想實現一個可觀察數組,並在該數組內部應該有可觀察對象(JS對象)。並在視圖中我迭代這個數組並獲取對象並顯示對象屬性。假設有一個像下面這樣的對象,如何在可觀察數組內部敲除可觀察對象
{"name":"john","age":21,"address":"No 25"}
想象一下,可觀察數組是由上述對象組成的。
然後我想特定對象的改變單一財產(例如名稱),並需要看到的視圖的變化。
我怎樣才能做到這一點使用淘汰賽?
謝謝。
我想實現一個可觀察數組,並在該數組內部應該有可觀察對象(JS對象)。並在視圖中我迭代這個數組並獲取對象並顯示對象屬性。假設有一個像下面這樣的對象,如何在可觀察數組內部敲除可觀察對象
{"name":"john","age":21,"address":"No 25"}
想象一下,可觀察數組是由上述對象組成的。
然後我想特定對象的改變單一財產(例如名稱),並需要看到的視圖的變化。
我怎樣才能做到這一點使用淘汰賽?
謝謝。
如果你在視圖模型中設置你的用戶並且用knockout mapping來映射它,你應該得到想要的結果。例如:
myObservableArray.push(new UserViewModel({"name":"john","age":21,"address":"No 25"}));
var UserViewModel = function(data){
var self = this;
ko.mapping.fromJS(data, {}, self);
}
這樣每個映射的屬性都將是可觀察的,當它們改變時,這將反映在您的標記中。
要將模型轉換爲可觀察視圖模型,可以使用ko.utils.arrayMap和ko.mapping.fromJS。
var source = [{"name":"john","age":21,"address":"No 25"}];
var vm = ko.utils.arrayMap(source, function (item) {
return ko.mapping.fromJS(item)
});
簡單地定義一個新的模式爲您的數據項,使每個屬性可觀察到的,就像這樣:
var dataItemModel = function (name, age, address) {
this.name = ko.observable(name);
this.age = ko.observable(age);
this.address = ko.observable(address);
}
當你對他們的數據,循環,創建dataItemModel
(它有可觀察的屬性),然後將此項目添加到您的ObservableArray
。
截至目前,答案中引用的插件似乎已被放棄。 –
它仍然適用於最新版本的Knockout(3.4.0) –