2010-10-02 62 views
0

我有一个自定义小部件,它具有内容窗格(以及其他内容)。其中我有一个多选列表框。我有一个dojoAttachPoint分配给列表框。Dojo PostCreate问题

我想在创建窗口小部件时填充列表框。

postCreate我试图填补项目的列表框,而是参考 this.selectFrom(这是dojoAttachPoint)为空。

为什么在postCreate中不可用?任何解决方法?

在此先感谢

HTML:

<div dojoType='dijit.layout.ContentPane'> 
    <select name="drop1" style='width:200px;' 
     id="selectTo" dojoAttachPoint='selectTo' 
     size="10" multiple="multiple"> 
    <option value="1">second col</option> 
    <option value="2">option two</option> 
    </select> 
</div> 

JS:

postCreate: function(){ 
    this.inherited (arguments); 
    var newOption = document.createElement('option'); 
    text = 'Mark Brown'; 
    value = '1'; 
    selectTo.options [this.selectTo.options.length] = new Option (name,value); 
} 

this.selectTonull,它不应该。

感谢

+0

没有一些代码片段很难提供帮助。据我所知,你描述的是我的作品... http://jsfiddle.net/fAZGF/ – 2010-10-03 00:55:22

+0

你的代码片段看起来可能已经变得臃肿。你能确保你的templateString(或单独的HTML模板)在其中可见吗?我们可以插入并运行故障排除的东西会更好。 – 2010-10-03 01:26:57

+0

由于某些原因,它没有显示模板。无论如何,我已经解决了这个问题。这是我的错误。对this.selectTo(它是null)的引用在一个匿名函数中,它基本上有xhr调用我的web服务来获取用户列表并填充列表框。由于我在匿名函数中使用了'this',它已经变为null了。常见的错误。所以我在postCreate()里保存了'this'的引用,var _this = this并且使用了_this.selectTo insead,它工作正常。谢谢大家的帮助。 – Mark 2010-10-03 03:04:43

回答

1

我觉得dojoAttachPoint仅在模板有意义的(见dijit._Templated)模板是独立的串/这是用来组成部件,并且一般不会在页面内联使用的文件。

+0

是的,正确的,我确实有我自己的模板。 – Mark 2010-10-10 01:50:02