ノックアウトカスタムバインディングはどのようにobservableArrayで動作しますか?カスタムバインディングでko.observable()を使用すると、すべて正常に動作します。 ko.observableArray()を使用すると、初期イベント(initおよびupdate once)のみがスローされますが、それ以上の変更は検出されません(Fiddleまたは下記のコードを参照)。ko.observableArray()でカスタムバインディングを使用する方法
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="knockout-2.2.1.js"> </script>
</head>
<body>
<div data-bind="text: Observable, updateBinding: Observable"></div>
<div data-bind="foreach: ObservableArray, updateBinding: ObservableArray">
<span data-bind="text: $data"></span>
</div>
<script type="text/javascript">
ko.bindingHandlers['updateBinding'] = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
alert("Binding Handler (Init)");
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
alert("Binding Handler (Update)");
}
};
function ViewModel() {
var self = this;
self.ObservableArray = ko.observableArray();
self.Observable = ko.observable();
}
var viewModel = new ViewModel();
// Fires Init + Update for Observable and ObservableArray
ko.applyBindings(viewModel);
// Fires Update for Observable
viewModel.Observable(1);
// Does nothing
viewModel.ObservableArray.push('1');
</script>
</body>
</html>
ありがとう、面白い情報 - これらは私がknockoutjsのドキュメントで期待する情報です - 少なくとも私たちは次のようなものを持っています:) – Dresel