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对象都被初始化为空字符串。注释掉代码中的最后一行,在我看来应该可以。