a の成功関数は、内部で呼び出されているサービスのスコープに$http.put
アクセスできません。this
PUT リクエストからのコールバックで、サービスのプロパティを更新する必要があります。
これは、私がサービスでやろうとしていることの簡単な例です:
var myApp = angular.module('myApp', function($routeProvider) {
// route provider stuff
}).service('CatalogueService', function($rootScope, $http) {
// create an array as part of my catalogue
this.items = [];
// make a call to get some data for the catalogue
this.add = function(id) {
$http.put(
$rootScope.apiURL,
{id:id}
).success(function(data,status,headers,config) {
// on success push the data to the catalogue
// when I try to access "this" - it treats it as the window
this.items.push(data);
}).success(function(data,status,headers,config) {
alert(data);
});
}
}
JS にエラーがある場合は申し訳ありませんが、主なポイントは、成功のコールバック内からサービス スコープにアクセスする方法です。
編集:この質問への答えは正しかったが、factory
ジョシュとマークの両方が推奨した方法に切り替えた