1
적어도 하나의 항목이 선택되어 있고 선택한 항목의 수를 더 바인딩하려는 경우에만 단추를 활성화해야합니다.고급 qooxdoo 컨트롤러 선택 바인딩?
이상적 컨버터 기능하지 않고, 더 나은 솔루션이 있습니까 :
// Multi-selection with <Ctrl> enabled. Click the button to clear the selection.
root = this.getRoot();
root.setLayout(new qx.ui.layout.VBox());
var model = new qx.data.Array(['one', 'two', 'three', 'four', 'five']);
var list = new qx.ui.form.List().set({selectionMode: 'multi'});
root.add(list);
var button = new qx.ui.form.Button();
button.addListener('execute', list.resetSelection, list)
root.add(button);
/**** Bindings ****/
var controller = new qx.data.controller.List(model, list);
// Enable button when there is at least one list element selected
controller.bind('selection[0]', button, 'enabled', {
converter: function (data)
{
return (data) ? true : false;
}
});
// Label button with amount of selected list items
controller.bind('selection', button, 'label', {
converter: function (data)
{
return data.length.toString();
}
});
그것은, 하지만 작동 : 나는 다음과 같은 솔루션 (run in qooxdoo Playground)에 온 바인딩을 적용 할 때 변환 기능을 사용
?
"isSelected"또는 "selection.length"와 같은 속성을 검색하지 않았습니다. 내가 바인딩 시스템을 이해하려면 내가 뭔가를 놓친 것 같아 ...
도 덜 우아 바인딩하지 않고, 이벤트를 통해 버튼을 활성화/비활성화, 그것은 처음에 비활성화 된 버튼이 필요합니다controller.getSelection().addListener('change', function()
{
button.setEnabled(controller.getSelection().getLength() > 0)
}, this)
button.setEnabled(false)