5

Backbone.js中,可以使用预先存在的 JSON 数据实例化模型

var user = new Backbone.Model({ name: "John Doe", age: 30 });

然后通过一次调用执行更新

user.save({ age: 31 }, { success: successCallback, error: errorCallback });

这在各种场景中都很方便,例如当数据已经通过缓存或预填充模板在客户端上可用时(例如使用<%= raw @user.to_json %>在 rails erb 模板中使用)。

我很想知道使用$resourcewith时这是如何完成的Angular.js。现在,我有一种情况,我的数据在$resource创建之前缓存在客户端上,我想在不进行额外GET调用来填充对象的情况下对其进行更新:

app.factory('User', ['$resource', function($resource) {
    return $resource('/users/:user_id.json', { user_id: '@id' }, {
        get: { method: 'GET' },
        save: { method: 'PUT' },
        create: { method: 'POST' },
        destroy: { method: 'DELETE' }
    });
}]);

在我的控制器的某个地方,我只想更新现有用户而不从服务器获取它:

app.controller('UsersController', ['User', function(User) {
    // somehow initialize a user from an existing
    // object, say { name: "John Doe", age: 30 }
    user.age = 31
    user.$save()

    // instead of doing this
    User.get({ user_id: 100 }, function(user, respHeaders) {
        user.age = 31
        user.$save()
    }); 
}]);

我可能仍然处于 Backbone 的心态,但我真的很好奇我是否在处理这一切都是错误的。谢谢。

4

1 回答 1

12

$resource 提供了创建新用户的选项,就像使用任何对象一样:

var user = new User({name : 'John Doe', age: 30});
user.age = 32;
user.$save();

资源文件

于 2013-06-25T10:16:20.883 回答