わかりました、選択したアイテムにバインドされたデータを渡す方法を考え出しました:
$(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);
};
};