2
我有一种情况,当某个observable发生更改时,我想执行任务,因此我设置了订阅 - 但是我不希望在创建该项目时触发它。KnockoutJS - 仅在初始化后触发订阅
http://jsfiddle.net/ciel/EeZjH/
基本上,“绑定”已被设置为每个项目时,从控制器来的 - 所以我不希望发布的更改呢。只有当它们从初始化值改变时。这是否合理?
function Item(data) {
this.Binding = ko.observable(data);
this.Binding.subscribe(function (newValue) {
console.log("The Binding is Now " + newValue);
});
}
var viewModel = {
Options: ko.observableArray([{
"Value": "1",
"Name": "One"
}, {
"Value": "2",
"Name": "Two"
}, {
"Value": "3",
"Name": "Three"
}]),
Items: ko.observableArray([])
};
viewModel.Items.push(new Item("1"));
viewModel.Items.push(new Item("2"));
viewModel.Items.push(new Item("3"));
viewModel.output = ko.computed(function() {
return JSON.stringify(
viewModel.Items().map(
function (i) {
return i.Binding();
}));
});
ko.applyBindings(viewModel);
如果我理解正确的话,你要设法避免触发势必'Binding'功能创建对象时?我只是跑了你的小提琴,那个回调实际上没有被调用。你能否进一步解释这个问题? –
你的假设是正确的。小提琴似乎从昨天被打破,不知道为什么。我认为jsFiddle正在升级或什么,它是干扰。 – Ciel
如果您在小提琴上检查控制台,它会抛出各种随机错误,我认为这些错误与我的代码无关。这些错误发生在我运行的每一个小工具中,不管框架是什么,所以我相当肯定它与我的代码无关。 – Ciel