主干:集合将随机模型添加到自身
Backbone: collection adds random model to itself
我一直在搜索StackOverflow来寻找我问题的答案,但还没有找到有用的东西。
关于如何设置集合对象的一些背景。在获取时,我向集合传递一个哈希,并将 url 设置为 http://localhost/index.php?a=hash
.服务器应为该特定哈希返回 12 个名称。
出于某种原因,集合的第一个模型始终是一个模型,其属性设置为用于获取集合数据的字符串,之后的每个模型都很好。
fetch : function(o) {
var that = this,
successCallback = o.success,
errorCallback = o.error;
$.ajax({
type : 'GET',
url : this.url + o.hash,
dataType : 'json',
success : function(data) {
_.each(data, function(name) {
console.log(name);
that.add(new Model({
_id : name
}));
});
successCallback();
},
error : errorCallback
});
}
记录的名称列表是我期望从服务器获得的 12 个名称 [aaa,bbb,ccc,ddd...]。当我使用集合渲染视图时,这就是我所拥有的:
Object { cid="c1", attributes={...}, collection={...}, more...
Object { cid="c2", attributes={...}, _changing=false, more...}
Object { cid="c3", attributes={...}, _changing=false, more...}
Object { cid="c4", attributes={...}, _changing=false, more...}
Object { cid="c5", attributes={...}, _changing=false, more...}
Object { cid="c6", attributes={...}, _changing=false, more...}
Object { cid="c7", attributes={...}, _changing=false, more...}
Object { cid="c8", attributes={...}, _changing=false, more...}
Object { cid="c9", attributes={...}, _changing=false, more...}
Object { cid="c10", attributes={...}, _changing=false, more...}
Object { cid="c11", attributes={...}, _changing=false, more...}
Object { cid="c12", attributes={...}, _changing=false, more...}
Object { cid="c13", attributes={...}, _changing=false, more...}
正确的模型如下所示:https://i.stack.imgur.com/2Fprv.png
该系列的第一个模型是:https://i.stack.imgur.com/5eGdB.png
看起来我的集合的第一个模型有一个 attributes
属性,其中包含用于获取实际数据的初始哈希。我不知道它是如何设置的,或者在哪里设置。以下是我引用该系列模型的方式:
render : function() {
_.each(this.collection.models, function(model) {
console.log(model);
var ele = this._build(model.id),
a = ele.find('a');
this.$el.append(ele);
a.click(App.pageController.trigger('showSetData', model.id));
}.bind(this));
}
我可以进去删除该系列的第一个模型,但我想知道为什么会发生这种情况,以及是否有比黑客更好的方法来解决这个问题。如果您需要任何其他信息,请告诉我!谢谢。
集合代码
初始化
var col = new ClientSetList(hash);
ClientSetList Backbone.Collection code
var ClientSetList = Backbone.Collection.extend({
initialize : function(hash) {
this.url = App.config.host +
App.config.base +
App.config.HASH + hash;
},
fetch : function(o) {
var that = this,
successCallback = o.success,
errorCallback = o.error;
$.ajax({
type : 'GET',
url : this.url,
dataType : 'json',
success : function(data) {
_.each(data, function(setName) {
console.log(setName);
that.add(new Model({
set_name : setName
}));
});
successCallback();
},
error : errorCallback
});
}
});
初始化集合时的第一个参数是模型列表,第二个参数是选项哈希,这与使用第一个参数作为选项的视图和模型不同。您所描述的内容与在初始化集合时省略空数组时发生的情况一致。
你能在初始化集合的地方发布代码吗?
我认为你有:
var opt = {
//... options
}
var c = new Backbone.Collection(opt);
你应该拥有什么:
var opt = {
//... options
}
var c = new Backbone.Collection([], opt);
相关文章:
- Sequelize associations:set[Models]添加新模型,而不是关联现有模型
- 添加/更改模型后重新影响和渲染集合
- 如何观察在 Sails .js 中添加到模型中的新记录
- 为什么将子模型添加到两个父模型
- 主干.js:为每个模型添加验证
- 一种对MVC中的模型进行封装(添加隐私)的方法
- 如何在Marionette中向compositeview添加更多模型
- Ember.js为特定的模型id添加css类
- 淘汰MVC,绑定模型&将对象添加到模型中
- 主干中的比较器在添加新模型时需要排序调用
- Ember.js按名称查找模型项,然后将其添加到现有的不同模型hasMany记录中
- Backbone.js在模型后面添加了一个计算属性's已解析
- 调用ko.applyBindings后,向Knockout视图模型添加新属性
- AngularJS添加表示数组模型的输入
- 第一步's与THRE.js:试图将搅拌机模型添加到场景中的问题
- 主干:从集合视图向集合添加模型
- 添加模型到集合问题
- 在Rails中向Charts.js中添加模型数据
- 主干:如何在添加模型数组时仅触发一次添加事件
- 不能添加模型到mongo数据库