【问题标题】:Why does dijit.form.Select have method setStore() while dijit.form.FilteringSelect doesn't?为什么 dijit.form.Select 有方法 setStore() 而 dijit.form.FilteringSelect 没有?
【发布时间】:2013-12-02 17:16:36
【问题描述】:

我在 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

【问题讨论】:

    标签: javascript forms api select dojo


    【解决方案1】:

    Dojo 库随着时间的推移而“演变”。由于 Dojo 是开源的,它得到了很多人的贡献,就像你我一样。并不是每个人一开始都遵循相同的约定和标准。继续努力“打磨”Dojo,在未来的版本中,将会更加一致。

    查看这个特定示例,我们看到目标是设置小部件的“存储”属性。我相信执行此任务的正确方法是:

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

    将在小部件构建期间使用,或者稍后使用:

    myWidget.set("store", myStore);
    

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

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

    【讨论】:

    • 问题是dijit.form.Select 上的setStore 方法不仅仅是设置商店;它设置选定的值以及获取参数。这有助于打一个电话而不是三个电话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2015-05-01
    • 2014-03-07
    • 2011-06-12
    • 2013-01-18
    相关资源
    最近更新 更多