[英]knockout nested model observableArray is not defined
我有一個非常基本的結構,帶有2個嵌套模型
model1
----observableArray of model2
model2
----observableArray of model3
我能夠綁定到model1,並遍歷model2數組(使用foreach)並綁定到屬性。
問題是當我嘗試綁定到model3數組時:
[root] data-bind(blah: model1.property1 // OK
[root] foreach: model2Array // OK
data-bind(blah: model2.property1) // OK
data-bind(blah: model2.model3Array) // Undefined exception
model1,model2,model3都以相同的方式定義
var model3 = function(data) {
var self = this;
if (data) ko.mapping.fromJS(data, {}, self);
else ko.mapping.fromJS(_model2Template, {}, self);
}
var model2 = function(data) {
var self = this;
if (data) ko.mapping.fromJS(data, {}, self);
else ko.mapping.fromJS(_model2Template, {}, self);
self.model3Array = ko.observableArray();
self.addModel3 = function(m3) {
if (m3) self.model3Array.push(m3)
else self.model3Array.push(new model3);
}
}
var model1 = function(data) {
var self = this;
if (data) ko.mapping.fromJS(data, {}, self);
else ko.mapping.fromJS(_model1Template, {}, self);
self.model2Array = ko.observableArray();
self.addModel2 = function(m2) {
if (m2) self.model2Array.push(m2)
else self.model2Array.push(new model2);
}
}
window.model1 = new model1();
ko.applyBindings(model1);
有趣的是,model1上的observableArray可以按預期工作。當我嘗試訪問根數組中的一個對象上的數組時,事情崩潰了!
更新
添加了用於在數組中添加新對象的函數
我猜我需要為每個數組提供一個帶有創建事件的映射,但是不確定該去哪里
想通了..問題出在我的添加處理程序中
self.addModel3 = function(m3) {
if (m3) self.model3Array.push(m3)
else self.model3Array.push(new model3);
}
以為我很聰明,並且假設除非我明確指定它們,否則它將不帶任何參數調用,
但以這種方式聲明點擊處理程序:
<button ... data-bind="click: addModel2">
實際上將通過模型作為第一個參數。 所以我實際上是在添加根模型,而不是我期望的嵌套模型。 而且沒有javascript錯誤,只是我原本期望的屬性最終丟失了
從您的示例中, model2.model3array
應該是model2.model3Array
?
Hth,
亞倫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.