2014-03-24 104 views
1

我想給dijit按鈕添加到一個節點,但它與道場:添加一個按鈕動態

Error: Failed to execute 'appendChild' on 'Node': The new child element is null.

代碼失敗是

var output = dom.byId(this.baseClass + 'displayValues'); 
var btnDelete = new Button({ label: "Delete" }, "btnDelete"); 
btnDelete.startup(); 
domConstruct.place(btnDelete, output); 

輸出單元被稱爲絕對有效我可以添加一堆span標籤給它,如果我想用相同類型的代碼

我也可以用這種代碼添加按鈕

var node = domConstruct.toDom('<li>' + name + '|' + value + '<button type=\"button\" OnClick=\"this._removeItem(\'' + name + '\');\">X</button></li>'); 

但在這種情況下,它找不到使用此,父級或無修飾符的點擊式方法。在任何情況下,文件說因爲memeory泄漏不這樣做這樣的事情

有沒有人有任何可能出錯的指針。

任何一切非常感謝幫助

+0

您不應該執行domConstruct命令。新Button的第二個參數是放置按鈕的元素的位置。 http://jsfiddle.net/N2Yjt/1/ – tik27

+0

感謝您的評論。你應該重新發布答案,以便我可以讓你高興。乾杯 –

+0

除了所有其他答案,domConstruct.place正在尋找放置一個節點而不是實際的小部件。所以domConstruct.place(btnDelete.domNode,output);也應該工作。 – Richard

回答

3

第二個參數按鈕構造可以是html元素的任一ID,或對象れ。

這是我如何使用第二個選項,動態創建節點。

define(["dojo", "dojo/dom", "dojo/dom-style", "dojo/dom-class", "dojo/dom-construct", "dojo/query", 
function(dojo, dom, domStyle, domClass, domConstruct, query) { 
    var buttons = dom.byId('my-buttons'); 
    var buttonNode = domConstruct.toDom('<button type="button" class="button delete-button"></button>') 
    buttons.appendChild(buttonNode) 
    var button = new Button({label: "Delete" }, buttonNode); 
}) 
+0

非常感謝你。有用。我的Dojo顯然很薄弱(剛開始),所以學習需要我認爲 –

+0

@CrabBucket很難,因爲Dojo沒有太多的文檔,教程和例子。 –

1

是不需要的domConstruct命令,新按鈕的第二個參數是元素的放置按鈕所處的位置。

var btnDelete = new Button({ label: "Delete" }, <idOfContainerElement") 

jsfiddle.net/N2Yjt/1