Dojo节点属性

Dojo节点属性,dojo,Dojo,我只是Dojo和JavaScript编程的初学者,希望有人能给我一些提示 我想在运行时修改dijit.form.ComboBox的store属性。 (我已经创建了一个id为“cmbCat”的组合框和一个id为“catData”的数据存储区。如果在我的HTML页面中嵌入到store=“catData”中,它将非常有效) 我的第一种方法是使用dojo.attr(“cmbCat”,{store:“catData”}); 然而,它没有起作用 我的第二种方法是使用cmbCat.store=catData;

我只是Dojo和JavaScript编程的初学者,希望有人能给我一些提示

我想在运行时修改dijit.form.ComboBox的store属性。 (我已经创建了一个id为“cmbCat”的组合框和一个id为“catData”的数据存储区。如果在我的HTML页面中嵌入到store=“catData”中,它将非常有效)

我的第一种方法是使用dojo.attr(“cmbCat”,{store:“catData”}); 然而,它没有起作用

我的第二种方法是使用cmbCat.store=catData; 这工作做得很好

我只是想知道什么时候应该使用dojo.attr,什么时候应该使用dot属性?如果它们相同,为什么我的dojo.attr不工作

非常感谢你在这方面帮助我

Nick

根据dojo.attr的

DOM属性、事件和CSS样式的getter和setter


因此,在获取/设置DOM属性、事件和CSS样式的值时,应该使用
dojo.attr
。在这种情况下,
store
属性不适用于使用
dojo.attr

我发现一些小部件在这个意义上与其他小部件有点不同,但是对于较新版本的dojo,您应该使用set方法来处理小部件,而不是attr

cmbCat.set('store', catData);
理解调用小部件的set/get方法时会发生什么也很重要,而不仅仅是使用点语法

set和get方法可以映射到一些小部件实现的自定义setter和getter。如果只使用点语法调用属性,则不会调用自定义setter和getter。我认为在旧版本的dojo上,attr用于widget,但该功能已被弃用,而且并不可靠。小部件上下文中的attr方法将在Dojo 2.0中删除,并在Dojo 1.4中被弃用

您可以在这里看到关于setter和getter的更多信息:

在我使用1.5的代码中,我一直在使用set方法来设置selects上的存储,以及设置内容窗格、内容等的标题。它工作得非常好

另外,假设在创建小部件时catData在您的作用域中,您在这里有一个简单的错误:

dojo.attr("cmbCat", {store: "catData"});
由于“catData”是一个字符串,因此您正在为store属性指定一个字符串。这在编程上不起作用,您需要将catData作为引用dojo.data.ItemFileWriteStore或类似文件副本的变量