1
我在觸發器中觸發訂閱事件時遇到了一些麻煩。我有一組Schema,每個Schema都持有若干天。我想在一天的時間戳發生變化時觸發我的訂閱事件,而不僅僅是當架構數組發生更改時。在Knockout JS中爲兒童屬性觸發訂閱事件
這是我的代碼到目前爲止。當架構添加到架構陣列或從架構陣列中移除時,底部的訂閱事件觸發。但是,當任何兒童屬性發生變化時並非如此
{"schemas":[
{"days":[
{"from":"12:00","to":"17:00"},
{"from":"06:30","to":"17:00"},
{"from":"06:30","to":"17:00"},
...
]},
{"days":[
{"from":"06:30","to":"17:00"},
{"from":"06:30","to":"17:00"},
{"from":"06:30","to":"17:00"},
...
]}
]}
var Schema = function(data, parent, index) {
var self = this;
ko.mapping.fromJS(data, {}, self);
};
var SchemaViewModelMapping = new (function() {
var self = this;
self.index = 0;
self.schemas = {
create: function(options) {
self.index++;
return new Schema(options.data, options.parent, self.index);
}
};
self.index = 0;
})();
var SchemaViewModel = function() {
ko.mapping.fromJS(data, SchemaViewModelMapping, self);
self.schemas.subscribe(function(value) {
**Let me do something when a DAY changes here!!!**
});
}
var ViewModel = new SchemaViewModel;
ko.applyBindings(ViewModel);
'schemas' observable不知道數組內容的內部 - 只有數組本身的內容。要做你的建議,你需要使數組中每個項目的每個屬性都是一個'observable'或'observableArray',並訂閱這些以查看任何更改 – 2014-10-08 09:28:29
謝謝..這很有道理。我能解決它。 – Stromgren 2014-10-08 10:46:36
請將其添加爲答案,並將其標記爲幫助其他人的有效答案。 – JotaBe 2014-10-10 09:32:48