在查询结果中保存单个对象

时间:2014-09-09 11:04:00

标签: angularjs tastypie

我已宣布AngularJS服务与django-tastypie服务器一起使用:

MyApp.service('AppService', [ '$rootScope', '$resource', function ($rootScope, $resource) {
    return $resource("http://localhost:8000/api/v1/app/:id/", {'delete': false}, {
        query: { method: "GET", isArray: false, params: {
            limit: 1000
        } }
    });
}]);

然后,在this example之后我尝试保存单个对象并失败:

var apps = AppService.query(function() {
    // Read results
    console.log(apps.objects[0].name);      <-- OK!

    // Change and save specific item
    var app = apps[0];                      <-- Undefined!
    app.name = 'Specific App';
    app.save();
});

我可以在apps.objects中使用结果,但apps[0]未定义。

如何在查询结果中保存特定项? (似乎可以通过official example

更新

我无法按照我想要的方式解决这个问题。相反,我这样做了:

var _app = AppService.get({id: $scope.selected_app.id}, function () {
    _app.attribute = app.attribute;
    _app.$save();
});

这与sss解决方案类似。

2 个答案:

答案 0 :(得分:1)

您可以尝试该解决方案,但最好的选择是从服务器而不是阵列中只获取一个所需对象。

var apps = AppService.query(function(){         //阅读结果         的console.log(apps.objects [0]。名称); &lt; - 好的!

    var app = new AppService();
    angular.extend(app, apps.objects[0]);                           
    app.name = 'Specific App';
    app.$save();
});

答案 1 :(得分:0)

您的代码明确表示您不希望数组为结果:

isArray: false