Tính năng ràng buộc tùy chỉnh loại trực tiếp với observableArray như thế nào? Khi sử dụng ko.observable() với tùy chỉnh ràng buộc, mọi thứ hoạt động như mong đợi. Khi sử dụng ko.observableArray(), chỉ các sự kiện ban đầu (init và cập nhật một lần) mới được ném, nhưng các thay đổi khác không được phát hiện (xem Fiddle hoặc mã bên dưới).Cách sử dụng liên kết tùy chỉnh với 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>
Cảm ơn, thông tin thú vị - đây là những thông tin tôi mong đợi trong tài liệu knockoutjs - ít nhất chúng tôi có SO cho các công cụ như thế này :) – Dresel