Backbone fetch返回我的模型的所有实例
Backbone fetch returns all instance of my model
我有以下代码,它应该在我的模型中提取一个对象并用模板渲染它:
productDetails: function (id) {
var product = new app.models.Product({id: id});
product.fetch({
success: function (data) {
console.log(data);
app.slider.slidePage(new app.views.ProductView({model: data}).render().$el);
}
});
}
然而,由于某种原因,data
是我所有模型对象的列表:
attributes: Object
0: Object
1: Object
2: Object
3: Object
4: Object
5: Object
6: Object
7: Object
8: Object
9: Object
10: Object
11: Object
12: Object
13: Object
...
id: "73"
我是Backbone的新手,所以我不知道是什么原因导致的。。。
你需要更多的代码吗?
ProductModel.js
app.models.Product = Backbone.Model.extend({
initialize: function () {
},
sync: function (method, model, options) {
if (method === "read") {
app.adapters.product.findById(parseInt(this.id)).done(function (data) {
options.success(data);
});
}
}
});
app.models.ProductCollection = Backbone.Collection.extend({
model: app.models.Product,
sync: function (method, model, options) {
if (method === "read") {
app.adapters.product.findByName(options.data.name).done(function (data) {
options.success(data);
});
}
}
});
您的adapters.product
可能正在引用集合,然后在Product sync
函数中返回集合。
解决方案是这样的:
var findById = function (id) {
var deferred = $.Deferred();
var product = null;
var l = products.length;
for (var i = 0; i < l; i++) {
if (products[i].id === id) {
product = products[i];
break;
}
}
deferred.resolve(product); // HERE WAS product__s__
return deferred.promise();
}
相关文章:
- 显示模块模式在Knockout中设置模型的新实例
- spine.js在启动时填充模型实例
- 概念验证模型控制器调用正确的实例
- 挖空视图模型函数仅影响最后一个实例
- 挖空.js:等待视图模型实例化完成
- 使用模型创建实例显示'不是函数'(节点使用猫鼬)
- Aurelia组件在其他视图模型中使用时不共享实例
- 未在集合中实例化主干模型
- 在canjs中,根据任何模型实例的存在,有条件地显示胡子模板部分的最常用方法是什么
- 如何创建模型的实例并加载它
- Thinky.io 有很多没有保存新的模型实例
- Ember.js:如何使用模型的单个实例创建路由/控制器
- 猫鼬数据不会保存模型的新实例
- 如何在 Sails.JS 中订阅模型实例
- Ember.js:使用模型实例的路由获取模型实例的 url 字符串
- Django 从 HTML 修改模型实例
- 在主干模型中定义实例变量的正确方法是什么
- 主干.js:如何在集合/其他模型中实例化模型
- 如何将实例方法添加到帆中的所有模型.js
- 将模型实例传递到已初始化的主干视图