假设我有以下控制器:
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
已更改,但仍为空。任何人都知道为什么会这样?
答案 0 :(得分:0)
因为数据库调用是异步的,还没有返回触发回调,从而填充$ scope.reviews?