我创建了一个返回$ resource
的服务module.registerFactory('Website', function ($resource, $cacheFactory) {
var cache = $cacheFactory('websites');
var pagedCache = $cacheFactory('websites_paged');
return $resource('/api/websites/:id', {id: '@id'}, {
query: {method: 'GET', isArray: false, cache: pagedCache},
get: {method: 'GET', cache: cache}
});
});
在编辑状态下,我通过调用
接收所有详细信息$scope.website = Website.get({'id': $stateParams.id});
$ scope.website承诺按预期包含我的数据。 (下面是服务器缩短的JSON结果)
{"id":25,"name":"blabla","url":"http://here.com","description":"blabla",
"tags":[
{"id":6,"name":"..."},
{"id":7,"name":"..."}
{"id":10,"name":"..."}
],
"objectives":[
{"id":3206,"code":"WIS AD3.c","name":"[ommitted objective 3206]","parent_id":3203},
{"id":3209,"code":"WIS AD4.b","name":"[ommitted objective 3209]","parent_id":3207}
]}
我的问题在于目标属性。 在我的EditCtrl中,我打开一个模态并将目标作为选定项目发送到模态。这很完美。
$scope.selectObjectives = function () {
var modalInstance = $modal.open({
templateUrl: 'app/modules/objectives/templates/select-objectives.html',
controller: 'SelectObjectivesModalCtrl',
size: 'lg',
resolve: {
selectedItems: function () {
return $scope.website.objectives;
}
}
});
modalInstance.result.then(function (selectedItems) {
$scope.website.objectives = selectedItems;
console.log($scope.website);
});
}
关闭模态时,新selectedItems会重新注入$ scope.website.objectives。 (cfr.modalInstance.result.then()...) 控制台完美记录所有属性 - 包括目标。
现在出现了奇怪的部分: 一旦我尝试在另一个函数中访问$ scope.website(即更新) 目标属性已从$ scope.website中删除。
这是我的更新方法:
$scope.updateWebsite = function () {
console.log($scope.website);
$scope.website.$save(function () {
$cacheFactory.get('websites').remove('/api/websites/' + $scope.website.id);
$cacheFactory.get('websites_paged').removeAll();
$state.go('app.websites');
});
};
控制台记录$ scope.website中的所有属性 - 目标除外。这完全被删除了。
我希望自己足够清楚。 感谢您花些时间帮助我指出正确的方向。
答案 0 :(得分:0)
我的坏。 我的响应没有像RESTful POST那样返回整个对象。