在Backbone.js
中,可以使用
var user = new Backbone.Model({ name: "John Doe", age: 30 });
然后通过一次调用执行更新
user.save({ age: 31 }, { success: successCallback, error: errorCallback });
这在各种场景中都很方便,例如当客户端通过缓存或预先填充的模板(例如在rails erb模板中使用<%= raw @user.to_json %>
)可以获得该数据时。
我很想知道将$resource
与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心态,但如果我接近这一切都错了,我真的很好奇。感谢。
答案 0 :(得分:12)
$ resource提供了创建新用户的选项,就像使用任何对象一样:
var user = new User({name : 'John Doe', age: 30});
user.age = 32;
user.$save();