我有一个自定义小部件,它具有内容窗格(以及其他内容)。其中我有一个多选列表框。我有一个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.selectTo
是null
,它不应该。
感谢
没有一些代码片段很难提供帮助。据我所知,你描述的是我的作品... http://jsfiddle.net/fAZGF/ – 2010-10-03 00:55:22
你的代码片段看起来可能已经变得臃肿。你能确保你的templateString(或单独的HTML模板)在其中可见吗?我们可以插入并运行故障排除的东西会更好。 – 2010-10-03 01:26:57
由于某些原因,它没有显示模板。无论如何,我已经解决了这个问题。这是我的错误。对this.selectTo(它是null)的引用在一个匿名函数中,它基本上有xhr调用我的web服务来获取用户列表并填充列表框。由于我在匿名函数中使用了'this',它已经变为null了。常见的错误。所以我在postCreate()里保存了'this'的引用,var _this = this并且使用了_this.selectTo insead,它工作正常。谢谢大家的帮助。 – Mark 2010-10-03 03:04:43