オブザーバブルが変更されたときにタスクを実行したい状況があるため、サブスクリプションを設定しましたが、アイテムが作成されたときにこれを起動したくありません。
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);