좋아, 내가 바운드 데이터를 전달할 수있는 방법을 생각 : 여기
지금까지 내 코드입니다 선택 항목으로
$(ui.selected).tmplItem().data
선택할 때 선택하고 $(ui.selected).tmplItem().data
을 선택 해제 할 때. http://jsfiddle.net/8RnxC/
사용자 정의 바인딩 외모와 같은 :
ko.bindingHandlers.selectable = {
init: function(element, valueAccessor) {
$(element).attr("id", "selectable").selectable({
selected: function(event, ui) {
vm.selectRequest($(ui.selected).tmplItem().data);
},
unselected: function(event, ui) {
vm.unselectRequest($(ui.unselected).tmplItem().data);
}
});
}
};
그리고 내보기 모델 : 여기에 업데이트 된 바이올린
여기
function viewModel() {
// Data
this.requests = ko.observableArray([]);
this.selectedRequests = ko.observableArray([]);
// Behaviours
this.selectRequest = function(request) {
this.name = "othername";
// Add to array if not already there.
if ($.inArray(request, this.selectedRequests()) === -1) {
this.selectedRequests().push(request);
}
var self = this;
};
this.unselectRequest = function(request) {
// Remove from the array.
this.selectedRequests().splice($.inArray(request, this.selectedRequests()), 1);
};
};
폴 감사합니다! 그것이 접근하는 좋은 방법입니다. 유일한 관심사는보기 모델 속성 '요청'내에 UI 행 선택 상태를 혼합하는 것입니다. 내 시나리오에서는 '요청'속성이 백엔드에 다시 동기화되므로 다른 속성을 사용하여 선택한 행의 상태를 유지합니다. – joerage
@joerage 네가 무슨 뜻인지 알 겠어. 나는 당신이 그것을 어떻게 표현했는지를 보았고 그런 식으로 작동 시키려고했지만 실제로는 행운이 없었습니다. Knockout의 목적이기 때문에 이것을 MVVM으로 봐야합니다. MVVM에서 ViewModel은 뷰의 추상화이며 훨씬 더 밀접하게 UI 객체에 바인딩되어 있기 때문에 ViewModel에 반영된 선택 상태를 나타내는 속성이 이러한 UI 객체에 있으면 의미가 있습니다. 지속성에 대해 다른 표현이 필요한 경우에는 항상 서버에서 오브젝트를 재 맵핑 할 수 있습니다. –