2011-03-29 203 views
0

我只是一個關於Dojo和JavaScript編程的初學者,希望有人能給我一個提示。Dojo節點屬性

我想在運行時修改dijit.form.ComboBox的store屬性。我創建了一個ID爲「cmbCat」的組合框和一個ID爲「catData」的數據存儲,如果在我的HTML頁面中嵌入存儲=「catData」,它會很好地工作)

我的第一種方法是使用dojo.attr(「cmbCat」,{store:「catData」}); 但是,它沒有奏效。

我的第二種方法是使用cmbCat.store = catData; 這工作很好。

我只是想知道什麼時候應該使用dojo.attr以及何時使用點屬性?如果它們相同,爲什麼我的dojo.attr不起作用?

非常感謝您的幫助!

尼克

回答

1

我發現,一些小部件比其他人在這個意義上有點不同,但道場的新版本,你應該使用set方法的小部件,而不是ATTR。

cmbCat.set('store', catData); 

瞭解當您調用小部件的set/get方法而不是僅使用點語法時會發生什麼也很重要。

set和get方法可以映射到自定義的制定者和一些小部件實現干將。如果您只是使用點語法調用該屬性,則不會調用自定義設置器和獲取器。我認爲在dojo的舊版本中,attr被用於小部件的這個目的,但是該功能被棄用,並且不是真正可靠的。在小部件上下文中的attr方法將在Dojo 2.0中刪除,並在Dojo 1.4中棄用。 http://mail.dojotoolkit.org/pipermail/dojo-interest/2010-April/045199.html

你可以看到更多的關於getter和setter方法在這裏:使用1.5我已經使用set方法來設置上選擇的商店,而且還設置了內容窗格的標題http://dojotoolkit.org/reference-guide/quickstart/writingWidgets.html#custom-setters-getters

在我的代碼,內容等。它工作得很好。

此外,假設catData是在你的範圍,當你創建窗口小部件,你有一個簡單的錯誤在這裏:

dojo.attr("cmbCat", {store: "catData"}); 

由於「catData」是一個字符串,你被分配一個字符串到店裏財產。這不會以編程方式工作,您需要catData作爲引用dojo.data.ItemFileWriteStore或類似副本的變量。

1

dojo.attrdocumentation

一種DOM屬性,事件和CSS樣式getter和setter

所以,你應該得到/設定值時使用dojo.attr DOM屬性,事件和CSS樣式。在這種情況下,store屬性不適用於使用dojo.attr