我想知道是否可以通过以下方式将模型添加到集合中。 我试过了它并没有用。如果我直接添加JSON []就可以了。我知道这有点奇怪,但我想更好地了解BB是如何工作的。感谢。
var UserModel = Backbone.Model.extend({
urlRoot: '/users',
});
var UserModels = Backbone.Collection.extend({
url: '/users',
model: UserModel
});
var user = new UserModel({id:1});
user.fetch({ // get the model
success: function (user) {
var users = new UserModels();
users.add(user); // add the model to a collection
}
});
以下型号正在从服务器回复:
[{"name":"john","email":"john@bb.com"}]
答案 0 :(得分:3)
由于服务器的响应是一个包含单个元素的数组,因此您需要添加一个返回数组第一个元素的parse function:
var UserModel = Backbone.Model.extend({
urlRoot: '/users',
parse: function(response){
if(response && response.length) return response[0];
}
});
这应该允许模型从服务器正确解析此响应中的属性:[{"name":"john","email":"john@bb.com"}]
。
顺便说一句,您正在成功函数中创建用户集合,因此它不会在该函数之外可用。它可能只是您发布的示例代码,但您可以在外部创建用户集合,只需在成功函数中添加模型:
var users = new UserModels();
var user = new UserModel({id:1});
user.fetch({ // get the model
success: function (user) {
users.add(user); // add the model to a collection
}
});
我有created a fiddle所以你可以尝试一下。 (我使用了小提琴回声服务,这就是为什么我更改了网址并使用了POST)。如果您运行它并检查控制台,您将看到正在记录的用户集合,您可以检查其models
属性。