Я сделал пользовательский вид listitem (на основе http://news.qooxdoo.org/tutorial-part-4-2-custom-widgets-4).qooxdoo - выбор пользовательского списка элементов
У меня проблема с элементами выбора в этом списке. Всегда выбирается первый элемент (независимо от того, какой элемент в списке я нажму).
Что мне делать для решения моей проблемы?
Вот мой список-элемент виджета:
qx.Class.define("project.MyView", { extend : qx.ui.core.Widget, include : [qx.ui.form.MModelProperty], construct : function() { this.base(arguments); var layout = new qx.ui.layout.Grid(4, 2); layout.setColumnFlex(1, 1); this._setLayout(layout); this._createChildControl("icon"); this._createChildControl("date"); this._createChildControl("description"); }, properties : { appearance : { refine : true, init : "listitem" }, icon : { check : "String", apply : "_applyIcon", nullable : true }, date : { check : "String", apply : "_applyDate", nullable : true }, description : { check : "String", apply : "_applyDescription", nullable : true } }, members : { _createChildControlImpl : function(id) { var control; switch (id) { case "icon": control = new qx.ui.basic.Image(this.getIcon()); control.setAnonymous(true); this._add(control, { row : 0, column : 0, rowSpan : 2 }); break; case "date": control = new qx.ui.basic.Label(this.getDate()); control.setAnonymous(true); this._add(control, { row : 0, column : 2 }); break; case "description": control = new qx.ui.basic.Label(this.getDescription()); control.setAnonymous(true); control.setRich(true); this._add(control, { row : 0, column : 1 }); break; } return control || this.base(arguments, id); }, _applyIcon : function(value, old) { var icon = this.getChildControl("icon"); icon.setSource(value); }, _applyDescription : function(value, old) { var description = this.getChildControl("description"); description.setValue(value); }, _applyDate : function(value, old) { var date = this.getChildControl("date"); date.setValue(value); } }, destruct : function() { } });
... и вот, как я использую его:
this.list = new qx.ui.form.List(); this.listController = new qx.data.controller.List(null, this.list); this.listController.setDelegate({ createItem : function() { return new project.MyView(); }, bindItem : function(controller, item, id) { controller.bindProperty("description", "description", null,item, id); controller.bindProperty("icon", "icon", null, item, id); controller.bindProperty("date", "date", null, item, id); }, configureItem : function(item) { item.getChildControl("icon").setWidth(48); item.getChildControl("icon").setHeight(48); item.getChildControl("icon").setScale(true); item.setMinHeight(52); } });
Спасибо - это работает. – tchudyk