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