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

Javascript $scope函数内和控制器内的值,javascript,angularjs,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"){

假设我有以下控制器:

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
已更改。有人知道这是为什么吗

因为数据库调用是异步的,尚未返回以触发回调,因此填充$scope.reviews?

为什么有$scope.reviews=“”;在控制器中?我在视图中使用与此控制器关联的数据。我猜问题在于每次实例化控制器时,$scope.reviews对象都被初始化为空字符串。注释掉代码中的最后一行,在我看来应该可以。