似乎在我调用了backbone.js集合时,它通过cookie传递id而不是传递给我的GET方法。在请求标题中它会出现如下:
的Cookie:帖= ag5kZXZ-c29jcmVuY2h1c3IOCxIIUG9zdExpc3QYAQw; dev_appserver_login = “test100@example.com:错误:114323764255192059842”
这就是我所拥有的:
来电:
postCollection.get(id)
和get方法:
def get(self, id):
我想在get方法中使用id,而不是必须使用cookie。
答案 0 :(得分:5)
完成此任务的最佳方法可能如下所示。
var model = collection.get(id);
// If the model is not present locally..
if (!model) {
// Add empty model with id.
model = collection.add([{id: id}]);
// Populate model attributes from server.
model.fetch({success: successCallback, error: errorCallback });
}
collection.get(id)
不应该向后端发出请求。
答案 1 :(得分:1)
这是另一种看法。而不是创建一个大多数空模型,然后在获取后从服务器添加属性,你可以做我粘贴在下面。有一点需要考虑上面的例子,如果你创建一个模型,然后尝试从服务器获取该ID并且它不存在,你将不得不清理它。下面的代码将为您节省一步。
myModel = Backbone.Model.extend({
url : function() {
/*
create _ POST /model
read _ GET /model[/id]
update _ PUT /model/id
delete _ DELETE /model/id
*/
return this.id ? '/model/' + this.id : '/model';
},
});
myCollection = Backbone.Collection.extend({
model: myModel,
url: function() {
return '/model';
},
comparator: function(model) {
return model.get("foo");
},
getOrFetch: function(id) {
var model = this.get(id) || this.getByCid(id);
if (model) return model;
var url = this.url() +"/"+ id
return new this.model().fetch({url:url});
}
});
var mc = new myCollection(new myModel({foo:"bar"}));
mc.getOrFetch(1)