0
ASP.NET MVC 프로젝트에서 bootstrap dual listbox pluging을 사용하고 있습니다.
프로젝트에서 녹아웃도 사용하고 있습니다. 나는 녹아웃으로 원활하게 작동하도록이 플러그인에 대해 bindingHandler
을 만들려고합니다. 여기 부트 스트랩 이중 목록 상자 녹아웃 바인딩
는 HTML
<select class="form-control" data-bind="foreach:{data: EditedElement().Operations, as : 'op'} , dualList: EditedElement().Operations" multiple>
<option data-bind="value: op.OperationID(), text: op.Name(), selected: op.IsSelected()"></option>
</select>
보기 모델
0 처리기ko.bindingHandlers.dualList = {
init: function (element, valueAccessor) {
$(element).bootstrapDualListbox({
selectorMinimalHeight: 160
});
$(element).on('change', function() {
$(element).bootstrapDualListbox('refresh', true);
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).bootstrapDualListbox('destroy');
});
},
update: function (element, valueAccessor) {
$(element).bootstrapDualListbox('refresh', true);
}
}
바인딩 뭘하려
내 문제는이며 viewModel observableArray
과 플러그인간에 동기화 할 수 없습니다. 즉, 뷰 모델 속성에 반영되도록 플러그인의 변경 사항 (사용자가 일부 옵션을 제거하거나 옵션을 추가 함)을 사용하려면
그것은 도움이 될 것 같은데, 그 확인하고 그 수락에 따라 답변을 수락 것입니다. 덕분에 당신의 시간에 대한 어떤 식 으로든 –
'selected' observable은'바인딩 처리기 (binding handler) '외부에서 쿼리 할 때'undefined'라고 생각할 수 있습니다. 그 원인을 알 수 있습니까? –
대단히 고마워,이게 문제를 해결 했어.하지만 코드에 2 가지 수정을 했어. 다른 사람들이 네 답을 준비하는 데 도움이 될거야. ** ** 처음 수정 **은'selected'를'observable 'observableArray' ** ** 두 번째 수정 ** 'var data = ko.utils.unwrapObservable (valueAccessor());'문을'change' 이벤트 내부로 옮겨야했습니다. 이것은 이전에 말한 것처럼 모델 자체에서이 속성을 읽으려고 할 때 null을 받았기 때문에'binding '핸들러 외부에서'selected' 속성을 읽을 수 있다는 점에서 매우 중요했습니다. –