ng-change触发迟了

时间:2015-11-17 17:59:43

标签: javascript angularjs ionic-framework ionic

我正在搜索我的应用程序,我有搜索输入列出项目。

在这里,您可以看到在控制器中触发 runSearch()功能的输入。

        <div class="item item-input">
            <input type="search" placeholder="" ng-model="query" ng-change="runSearch()">
        </div>

runSearch()函数运行一些搜索功能,将找到的项目添加到$ scope.results,这些结果以html格式打印。

        LocalDB.getArchitects($scope.query).then(function (architects) {
                // add architects to results ($scope.results)
        });
        LocalDB.getBuildings($scope.query).then(function (buildings) {
                // add buildings to results
        });
        LocalDB.getCities($scope.query).then(function (cities) {
                // add cities to results ($scope.results)
        });

问题是,显示的结果会忽略输入中的最后一个字符。看起来ng-change触发器有点晚了,或者$ scope.query是一个字符迟到了。

阐释:

搜索输入为: ABCD

结果应该是: ABCD 某事

但实际结果是 ABC 某事

搜索输入中的最后一个字符(在这种情况下为 D )将被忽略。

1 个答案:

答案 0 :(得分:0)

我已经通过向itemsToShow添加结果然后每1秒刷新一次$scope.results来解决了这个问题。

$interval(function () {
    $scope.results = itemsToShow;
}, 1000);