0

Windows8アプリで検索コントラクトをプログラムしたい。基本的に、提案リストを除いて、すべてが正常に機能します。常に関数に入ると、提案を追加する必要があり、ランタイムエラー0x8000000eが発生します

例からコードをコピーして貼り付けましたが、唯一の違いは、データベースからデータをロードすることです。

appModel.Search.SearchPane.getForCurrentView().onsuggestionsrequested = function (eventObject) {
    var queryText = eventObject.queryText, suggestionRequest = eventObject.request;
    var query = queryText.toLowerCase();
    var maxNumberOfSuggestions = 5;
    mkData.getWords(eventObject.queryText, maxNumberOfSuggestions, function (suggestionList) {
        for (var i = 0, len = suggestionList.length; i < len; i++) {
            if (suggestionList[i].substr(0, query.length).toLowerCase() === query) {
                suggestionRequest.searchSuggestionCollection.appendQuerySuggestion(suggestionList[i]);
                if (suggestionRequest.searchSuggestionCollection.size === maxNumberOfSuggestions) {
                    break;
                }
            }
        }
    });
    if (suggestionRequest.searchSuggestionCollection.size > 0) {
        WinJS.log && WinJS.log("Suggestions provided for query: " + queryText, "sample", "status");
    } else {
        WinJS.log && WinJS.log("No suggestions provided for query: " + queryText, "sample", "status");
    }
};

Ajax-Callを静的な提案の配列と交換すると、機能します:(提案リストの良い言葉です。

私はすでにこれに対する解決策を見つけましたが、C#でのみです。そこで開発者はawaitキーワードを追加する必要がありますが、javascriptではこれを持っていません。

前もって感謝します!

4

1 に答える 1

0

さて、私は今それを自分で解決しました。ここに解決策があります。延期を使用する必要があります。そのほとんど文書化されていない:(

appModel.Search.SearchPane.getForCurrentView().onsuggestionsrequested = function (eventObject) {
    var queryText = eventObject.queryText, suggestionRequest = eventObject.request;
    var maxNumberOfSuggestions = 5;
    var deferral = eventObject.request.getDeferral();
    mkData.getWords(queryText, maxNumberOfSuggestions, function (suggestionList) {
        suggestionRequest.searchSuggestionCollection.appendQuerySuggestions(suggestionList);
        deferral.complete();
    });
    if (suggestionRequest.searchSuggestionCollection.size > 0) {
        WinJS.log && WinJS.log("Suggestions provided for query: " + queryText, "sample", "status");
    } else {
        WinJS.log && WinJS.log("No suggestions provided for query: " + queryText, "sample", "status");
    }
};
于 2012-10-24T08:21:23.570 に答える