$resource オブジェクトを返す WebService という AngularJS のファクトリがあります。
angular.module('cstarsServices')
.factory('WebService', function ($resource)
{
return $resource("some_url_here/:op1/:op2/:op3/:op4",
{op1: 'indexes'},
{
getIndexes: {
isArray: true,
method: 'GET'
}
}
);
});
コントローラーの 1 つで、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 を更新するにはどうすればよいですか? 助けてくれてありがとう。