我在 AngularJS 中有一个名为 WebService 的工厂,它返回一个 $resource 对象。
angular.module('cstarsServices')
.factory('WebService', function ($resource)
{
return $resource("some_url_here/:op1/:op2/:op3/:op4",
{op1: 'indexes'},
{
getIndexes: {
isArray: true,
method: 'GET'
}
}
);
});
在我的一个控制器中,我调用 getIndexes:
WebService.getIndexes(function(data){
// SearchIndex Table
$scope.languages = [];
var languages = [];
var ajaxResponse = [];
angular.forEach(data, function (item, i)
{
if (item.sourceTypes != null)
{
ajaxResponse.push({ selected: false, name: item.name, languages: item.sourceTypes[0] });
languages[item.sourceTypes[0]] = item.sourceTypes[0];
}
});
$scope.searchIndexes = ajaxResponse;
for (var key in languages)
{
$scope.languages.push(languages[key]);
}
$scope.language = languages[0];
});
//This is undefined
alert($scope.searchIndexes);
但是,这似乎并没有正确更新 $scope:例如, $scope.searchIndexes 的值已定义并且在函数内部具有正确的数据,但在外部未定义。发生了什么事,我怎样才能让 $scope 更新整个控制器,而不仅仅是在回调函数内部?提前感谢您的帮助。