怎么写dojo.placed?

时间:2011-01-12 23:02:27

标签: listbox dojo

我正在尝试放置一个带有id的选择框,但我认为我没有在dojo.place方法上正确输入参数,因为它是在Firefox中呈现而不是IE:

var removeOpt = dojo.query('#sSec2 option');
    this._sec1 = new widget.StyledDropdown(dojo.byId("sSec1"), function(){
        dojo.hitch(sm, sm.collectInfo);

        //Make sure the second security question does not populate with the first security question option selected
        var el = this._el, selected = this.getValue();

        // empty out the other select menu
        //dojo.empty(dojo.byId('sSec2'));
        dojo.query("#sSec2 option").forEach(dojo.destroy);

        // looping thru the cached options for the second select menu
        dojo.forEach(removeOpt, function(that){
            if (that.value != selected) {
                dojo.place(that, dojo.byId('sSec2'));
            }
        });

        // rebuild
       Dropdowns.byId('sSec2').build();
    }, true);

    var removeOpt2 = dojo.query('#sSec1 option');
    this._sec2 = new widget.StyledDropdown(dojo.byId("sSec2"), function(){
        dojo.hitch(sm, sm.collectInfo2);

        //Make sure the first security question does not populate with the second security question option selected
        var el = this._el, selected = this.getValue();

        // empty out the other select menu
        //dojo.empty(dojo.byId('sSec1'));
        dojo.query("#sSec1 option").forEach(dojo.destroy);

        // looping thru the cached options for the second select menu
        dojo.forEach(removeOpt2, function(that){
            if (that.value != selected) {
                dojo.place(that, dojo.byId('sSec1'));
            }
        });

        // rebuild
        Dropdowns.byId('sSec1').build();
我能得到一些建议吗?

1 个答案:

答案 0 :(得分:2)

你调用它的方式是将每个添加为id为“sSec2”的节点的(当前)最后一个子节点。

http://dojotoolkit.org/api/dojo/place

更重要的是,你的条件检查是什么?什么是selected?它没有被引用 - 这是故意的吗?

编辑RE:更新代码

好的,周围代码带来的背景会引发更多潜在的故障排除点。

  • this.getValue()返回您的期望? (大概truefalse与相关比较进行评分
    • 也许在这些if语句中抛出console.log或alert,以查看代码是否到达那里,是吗?
  • dojo.hitch行上,您打算执行该功能吗?如果是,请在结尾添加另一个() - dojo.hitch 返回一个函数,不会自行执行。
  • 此外,这可能无关紧要,但我有点好奇 - 我假设你的widget.StyledDropDown没有延长dijit._Widget?由于您传递构造函数的参数格式完全不同。

您是否可以在http://jsfiddle.net/上投放(非)工作样本?