초기화를 호출하지 않았습니다.
nullableChecked init 함수에서 확인한 init 함수를 업데이트 할 때처럼 프록시하십시오. 초기화없이
ko.bindingHandlers.nullableChecked = {
init: function(element, valueAccessor) {
ko.bindingHandlers.checked.init(element, valueAccessor);
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
if (value == null) element.indeterminate = true;
ko.bindingHandlers.checked.update(element, valueAccessor);
}
};
, 그것은 결코 실제로 "클릭"체크 박스에 바인딩 뭔가 녹아웃 얘기가 변경된 설정하지입니다. 디버그 코드 (
http://knockoutjs.com/downloads/knockout-2.2.1.debug.js)를 보면, init이 jQuery를 사용하여 체크 박스에 '클릭'이벤트를 설정하여 값이 변경 될 때 관찰 가능 객체를 업데이트한다는 것을 알 수 있습니다.
ko.bindingHandlers['checked'] = {
'init': function (element, valueAccessor, allBindingsAccessor) {
var updateHandler = function() {
var valueToWrite;
if (element.type == "checkbox") {
valueToWrite = element.checked;
} else if ((element.type == "radio") && (element.checked)) {
valueToWrite = element.value;
} else {
return; // "checked" binding only responds to checkboxes and selected radio buttons
}
var modelValue = valueAccessor(), unwrappedValue = ko.utils.unwrapObservable(modelValue);
if ((element.type == "checkbox") && (unwrappedValue instanceof Array)) {
// For checkboxes bound to an array, we add/remove the checkbox value to that array
// This works for both observable and non-observable arrays
var existingEntryIndex = ko.utils.arrayIndexOf(unwrappedValue, element.value);
if (element.checked && (existingEntryIndex < 0))
modelValue.push(element.value);
else if ((!element.checked) && (existingEntryIndex >= 0))
modelValue.splice(existingEntryIndex, 1);
} else {
ko.expressionRewriting.writeValueToProperty(modelValue, allBindingsAccessor, 'checked', valueToWrite, true);
}
};
ko.utils.registerEventHandler(element, "click", updateHandler);
// IE 6 won't allow radio buttons to be selected unless they have a name
if ((element.type == "radio") && !element.name)
ko.bindingHandlers['uniqueName']['init'](element, function() { return true });
},
편집 :는 여기에 바이올린입니다 : http://jsfiddle.net/cclose/NFfVn/
jsFiddle을 함께 사용하여 게임 할 수있는 기회가 있습니까? –