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