0

我正在尝试做一个自定义下拉菜单,它将查询一些我自己的服务并相应地更新其下拉菜单。我正在关注http://livedocs.dojotoolkit.org/dijit/_HasDropDown但没有描述如何为下拉容器创建 dom 的示例。

我需要设置this.dropDown一些dijit._Widgetctor?如果dijit._widget需要先创建另一个?如果是,我知道如何更新值,data-dojo-attach-point但如果出现下拉,则collection需要更新。dojo 中有没有这样的工具可以处理这种情况下的集合?否则手动处理clearing/filling/event-handleing每个下拉元素很容易变得混乱。

4

1 回答 1

1

我创建了一个自定义小部件,它显示在表单上。在这个小部件中,我覆盖了openDropDownandcloseDropDown函数。在我的情况下,下拉列表足够复杂,以至于每次用户关闭时都更容易将其销毁并重新创建

dojo.declare("TextboxWithCustomDropdown", 
    [dijit.form.ValidationTextBox, dijit._HasDropDown], {

    openDropDown: function() {  
        if(!this.dropDown) {
            var _s = this;

            this.dropDown = new MyCustomDropDown({...});
            this.dropDown.connect(this.dropDown, 'onChange', function(val) {
                _s.closeDropDown();
                _s.attr('value', val);              
            });
        }
        this.inherited(arguments);
    },
    closeDropDown: function() {
        this.inherited(arguments);
        if (this.dropDown) {
            this.dropDown.destroy();
            this.dropDown = null;
        }
    }
});

dojo.declare("MyCustomDropDown", [dijit._Widget, dijit._Templated], {

    templateString: ...

    // when the user makes their selection in the dropdown, I call the onChange 
    // function, and the textbox is listenting on this
    onChange: function(/*Object*/ value) {}
}
于 2012-05-10T13:34:56.250 回答