2
我有一個可觀察數組,其中包含具有可觀察屬性的對象(動態創建)。到目前爲止,如此神,但當我嘗試將一個計算的觀察值添加到動態創建的對象時,該對象的觀察值將解析爲未定義的。在Knockout中動態創建observables和計算值
//對象,其模式具有可觀察到的陣列以及動態地生成的對象
function SecretSanta(params) {
...
ko.applyBindings(new this.Model(this));
};
SecretSanta.prototype = {
...
Model: function(secretSanta) {
var self = this;
this.secretSanta = secretSanta;
this.newSanta = new Santa();
this.santas = ko.observableArray();
this.addSanta = function() {
self.santas.unshift(new Santa(self.newSanta.getName(), self.newSanta.getEmail()));
self.newSanta.clear();
}
this.removeSanta = function(santa) {
self.santas.splice(self.santas.indexOf(santa), 1);
};
this.santasCount = ko.computed(function() {
return self.santas().length;
});
this.valid = ko.computed(function() {
return self.santasCount() >= self.secretSanta.VALID_SANTAS;
});
}
};
// Dynamically generated objects
function Santa(name, email) {
var self = this;
this.name = ko.observable(name);
this.email = ko.observable(email);
this.valid = ko.computed(function() {
return self.name().match(/\w{3,}/);
});
}
在代碼的最後一行控制檯抱怨並self.name()是未定義的實例;如果我擺脫了計算初始化並將其設置爲函數內部,它工作正常(但綁定不會更新)。
任何人都可以指出我做錯了什麼?提前致謝。
我提供了一個鏈接到完整的代碼,當你創建它們http://jsfiddle.net/jeAtT/5/
這解決了我的問題,非常感謝! – danilupion