2011-03-29 165 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