0

我正在使用 Dojo 1.9。碰巧 onSearch 事件在 Safari 和 Chrome 中运行两次而不是一次。在 Firefox 中运行正常。

SearchBox.onSearch = function(){
    console.log("it ran");
}

我需要它运行一次。我怎么能做到这一点?

这个jsfiddle重现了这个问题。

4

2 回答 2

1

我认为您在不受支持的情况下使用 SearchBox,即未指定其“存储”属性或“列表”属性。

我放在这里: http: //jsfiddle.net/adrian_vasiliu/g4yLQ/2/你的代码的修改变体。通过设置 store 属性(此处为空的 dojo/store/Memory):

var store = new Memory(); // empty store
var sb = new SearchBox({store: store, ...});

我只调用了一次 onSearch()(在 Chrome32/Win7 中测试)。由于实际上 SearchBox 应该与商店一起使用,我认为这并不是一个真正的错误。

于 2014-02-04T16:52:47.787 回答
0

对我来说,这种离奇的行为似乎是 Dojo 的错误。您可以随时尝试解决方法,如下所示

require(["dojox/mobile/SearchBox", "dojo/dom-construct"],
    function (SearchBox, domConstruct) {
        var sb = new SearchBox(
                {
                    placeHolder: "search",
                    incremental: false
                },
                domConstruct.create("input", { type: "search" },
                "searchDiv")
            );

        sb.startup();

        sb.onSearch = function () {
            // "Remove" the onSearch callback, don't forget to add it
            // once again, before searching.
            this.onSearch = function () {};

            alert("ran");
        };
    }
);
于 2013-07-08T18:22:32.680 回答