使用$ scope。$ apply()经常是一个好习惯吗?

时间:2017-04-22 13:18:06

标签: javascript angularjs

在将我的列表更新为视图和$ scope中的 ng-repeat 时,我遇到了问题。$ apply来救援。我关注观察者。使用$ scope。$ apply()经常是一个好习惯吗?因为我在应用程序中有很多视图,必须在按钮点击时立即更新 PS:赞赏任何替代方案 我的应用程序的JS代码示例:

function onRefreshList() {
    vm.showLoader = true;
    GetDataService.getVotes(someParams).then(function(res) {
    if (res){
        vm.showLoader = false;
        vm.voteList = res; //voteList will be updated on click of Refresh list 
        $scope.$apply(); //working fine with this }
    }).catch(function (res) {
        vm.showLoader = false;
        console.log("There was an error will loading votes");
    })
}

HTML:

<div ng-show="showLoader">
    <ion-spinner icon="android" class="spinner-assertive"></ion-spinner>
</div>

<div ng-show="!showLoader" ng-repeat="vote in votesCtrl.voteList">
    {{vote}}
</div>

1 个答案:

答案 0 :(得分:1)

AngularJS默认为JavaScript async提供自己的包装器:

  1. ng-clickng-keydown
  2. 等指令
  3. $http异步AJAX调用服务
  4. $timeout$interval
  5. 在我看来,自己使用$scope.$apply()方法是一种不好的做法,并且不应在整个代码中随机使用此方法。如果必须,这意味着当您考虑应用程序/模块/组件时,您做错了。

    了解更多here