angular $ resource在对象更改时删除属性

时间:2015-02-24 23:03:25

标签: angularjs

我创建了一个返回$ 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中的所有属性 - 目标除外。这完全被删除了。

我希望自己足够清楚。 感谢您花些时间帮助我指出正确的方向。

1 个答案:

答案 0 :(得分:0)

我的坏。 我的响应没有像RESTful POST那样返回整个对象。