0
기존 값을 가져 와서 뷰 모델에 삽입하는 사용자 지정 바인딩 작업 중입니다. 그러나 ko.bindingHandlers에 제공된 요소에 하위 요소가없는 것 같은 장애물이 있습니다.KnockoutJS custom bindings 요소에 자식이 있나요?
KnockoutJS에서 어떻게 작동합니까? 아니면 뭔가 빠졌습니까? 여기
내 HTML 마크 업입니다 :<div data-bind="with: person, useInitValueFor: ['firstName', 'lastName']">
<div data-bind="text: firstName">John</div>
<div data-bind="text: lastName">Doe</div>
</div>
그리고 여기 내 JS 코드입니다 :
이ko.bindingHandlers.useInitValueFor = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var $elem = $(element);
var value = ko.utils.unwrapObservable(valueAccessor());
var allBindings = allBindingsAccessor();
for (var i = 0; i < value.length; i++) {
var c = value[i];
var e = $elem.children('[data-bind*="' + c + '"]:first');
alert(e.length); // This gives me 0
if (e.length > 0) {
var a = e.attr('data-bind').split(',');
for (var j = 0; j < a.length; j++) {
var b = a[j].split(':');
switch (b[0]) {
case 'text':
allBindings.with[c](b[1]);
alert(allBindings.with[c]());
break;
}
}
}
}
}
};
function personViewModel() {
this.person = {
firstName: ko.observable(),
lastName: ko.observable()
};
}
$(document).ready(function() {
var vm = new personViewModel();
ko.applyBindings(vm);
});
당신은 또한 jsFiddle에 여기를 볼 수 있습니다 다음 with
의 http://jsfiddle.net/dzul1983/XjD3Y/1/
내 바인딩에서 초기화 프로세스 중에 with 바인딩에서 처리중인 요소에 액세스 할 수 있습니까? –
아마도'with' 전에 바인딩을 실행하는 것이 가장 쉽지만, 실제로'ko.utils.domData.get (element, "__ko_anon_template __")' –
을 사용하여 복사 된 원소에 접근 할 수 있다면, 정보! –