函数内和控制器内的$ scope值

时间:2015-06-23 05:20:23

标签: javascript angularjs

假设我有以下控制器:

function artistCtrl($scope, $http, $location, dataFactory, $routeParams){
    $scope.$watch( 'artistName', function( newValue, oldValue ) {
      dataFactory.checkDb( newValue ).then(function(dbData){
        if(dbData.data != "No data"){
          $scope.artistInfo = dbData.data[0];
          $scope.reviews = dbData.data[1];
          console.log($scope.reviews)    
        } else{
          dataFactory.artistInfoAPIs(newValue);
        }
      })
    });

$scope.reviews = "";

}

我注意到一些奇怪的事情发生了。

更改artistName时,将调用回调。此回调检查数据库以获取信息。如果找到,则会将该数据分配给$scope.artistInfo$scope.reviews。当我在promise回调中控制记录这些值时,会显示正确的信息。但由于某种原因,console.log($scope.reviews)$watch之外的控制器内,尽管artistName已更改,但仍为空。任何人都知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

因为数据库调用是异步的,还没有返回触发回调,从而填充$ scope.reviews?