2010-10-02 123 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