为什么dijit.form.Select有方法setStore()而dijit.form.FilteringSelect没有?

时间:2013-12-02 17:16:36

标签: javascript forms api select dojo

我有扎实的Java背景,去年和ExtJS相比已经有好几次了,我现在面临着与Dojo的新挑战。问题是,我仍然不明白为什么API中有这么多的不一致。

为什么此方法不适用于dijit.form.FilteringSelect:

setStore(store, selectedValue, fetchArgs)

虽然是dijit.form.Select?

请参阅:

http://dojotoolkit.org/api/?qs=1.9/dijit/form/Select#1_9dijit_form_Select_setStore http://dojotoolkit.org/api/?qs=1.9/dijit/form/FilteringSelect

1 个答案:

答案 0 :(得分:1)

随着时间的推移,Dojo库已经“发展”了。由于Dojo是开源的,它已经被像你我这样的许多人所贡献。并非所有人都在一开始就遵循相同的惯例和标准。努力“抛光”Dojo继续,在未来的版本中,将会有更多的一致性。

看一下这个具体的例子,我们看到目标是设置小部件的“store”属性。我相信执行此任务的正确方法是:

var myWidget = new MyWidget({ store: myStore });

将在小部件构造期间使用,或者稍后使用以下方式设置:

myWidget.set("store", myStore);

这是在窗口小部件中设置任何属性的通用方法。

上述两种技术都适用于Select和FilteringSelect。当开发人员明确添加该选项时,其中一个小部件具有额外的“非标准”setter机制的事实很可能来自历史。当标准化出现时,该方法可能已被删除,但存在的危险是任何预先存在的应用程序将停止工作,这将被视为更糟。因此,我们应该将非标准选项视为已弃用。我希望看到它在API参考中被记录为已弃用(但没有)。