2013-11-21 1 views
0

동일한 바인딩 ie를 사용하는 페이지의 각 요소에 대해 실행되는 사용자 정의 바인딩이 있습니다. 이 코드는 첫 번째 필드에 텍스트를 입력 할 때 바인딩을 3 번 실행합니다.녹아웃 사용자 정의 바인딩 여러 번 실행

<input data-bind="pinTest: propertyOne" /> 
<input data-bind="pinTest: propertyTwo" /> 
<input data-bind="pinTest: propertyThree" /> 

어떻게 한 번만 발사 할 수 있습니까? 나는 녹아웃 v2.3과 v3을 시도했다. 3 개 속성

에 대한 propertyOne에 실행 종속을 생성합니다

ko.bindingHandlers.pinTest = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 

    ko.utils.registerEventHandler(element, "keyup", function() { 
     var value = valueAccessor(); 
     value(element.value); 
    }); 
    }, 
    update: function (element, valueAccessor, allBindings, viewModel, bindingContext) { 
    var value = ko.unwrap(bindingContext.$data.propertyOne); 
    console.log("in binding update -value="+value); 
    } 
}; 

var myVm = function() { 

    this.propertyOne = ko.observable(); 
    this.propertyTwo = ko.observable(); 
    this.propertyThree = ko.observable(); 
}; 

function start() { 
    ko.applyBindings(new myVm()); 
} 

답변