0
我有一個自定義的bindingHandler,單擊時效果很好。它成功地改變了數據點..但它不是被更新時,另一UI控件更改數據如何在此自定義bindingHandler中監聽數據更改?
我的HTML看起來像這樣
<input type="checkbox" data-bind="checked: publisher.my_check"> Checkbox
<div data-bind="slidebox: {label_on: 'ON', label_off: 'OFF', data: publisher.my_check }"></div>
當點擊我的bindingHandler看起來像這樣
ko.bindingHandlers.slidebox = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var el = $(element),
obj = valueAccessor();
//add additional markup
el.append($('<div>'));
//set initial label
el.find('div').text(el.hasClass('checked') ? obj.label_on : obj.label_off);
//update the data point
obj.data(el.hasClass('checked'));
var updateHandler = function() {
console.log('i got clicked');
var el = $(element),
obj = valueAccessor();
el.toggleClass('checked').find('div').text(el.hasClass('checked') ? obj.label_on : obj.label_off);
obj.data(el.hasClass('checked'));
};
ko.utils.registerEventHandler(element, "click", updateHandler);
},
'update': function (element, valueAccessor) {
console.log('i got updated');
}
};
該div它更改數據點和複選框更新按預期..但是當點擊複選框,我看不到'我得到更新'控制檯消息
不應該我的控制檯登錄至少火嗎? – 2012-03-08 19:16:42
澄清:日誌在啓動時觸發,但不是在點擊複選框時觸發 – 2012-03-08 19:33:10
是的。我在jsfiddle中運行這個(見編輯),它工作正常。沒有看到您的publisher.my_check代碼,我無法進一步幫助。 – madcapnmckay 2012-03-08 19:37:10