dojox/mobile/SearchBox 'onSearch'活动在webkit上运行两次



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

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

我需要它跑一次。我怎样才能做到这一点?

这个jsfiddle重现了这个问题。

我认为您在不支持的情况下使用SearchBox,即没有指定其"store"属性或"list"属性。

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

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

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

对我来说,这种不可思议的行为似乎是Dojo错误。你总是可以尝试一种变通方法,比如this:

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");
        };
    }
);

最新更新