我想在调用资源删除后更新$scope
。资源定义为
meanApp.factory('Group', function ($resource) {
return $resource('/api/v1/groups/:groupId', {groupId: '@_id'}, {
update: { method: 'PATCH'}
});
});
ui-router
控制器:
resolve: {
groups: ['Group', function (Group) {
return Group.query();
}
]
},
controller: function ($scope, groups) {
$scope.myData = groups;
$scope.deleteGroup = function (group) {
group.$delete(function(data){
group.$query().then(function(data) {
$scope.groups = data;
})
});
}
}
删除工作正常,删除回调中的$query
也会被调用,返回正确的结果。但后来我得到一个例外,范围没有刷新。
TypeError: undefined is not a function
at http://www.example.com:3000/lib/angular-resource.js:487:47
at Array.forEach (native)
at forEach (http://www.example.com:3000/lib/angular.js:309:21)
at $http.then.value.$resolved (http://www.example.com:3000/lib/angular-resource.js:486:37)
角度资源代码问题似乎是值未定义
if (action.isArray) {
value.length = 0;
forEach(data, function (item) {
value.push(new Resource(item));
});
修改
如果我使用类语法而不是实例语法,它可以工作:
$scope.deleteGroup = function (group) {
group.$delete(function(data){
Group.query().$promise.then(function(data) {
$scope.groups = data;
})
});
}
答案 0 :(得分:0)
不应该是:
group.$delete(function(data){
group.$query().$promise.then(function(data) {
$scope.groups = data;
})
});
资源操作会在其返回值中公开promise,因此您无法直接在它们上调用then()。