gpt4 book ai didi

backbone.js - 主干/下划线 uniqueId() 奇数

转载 作者:行者123 更新时间:2023-12-04 23:25:51 25 4
gpt4 key购买 nike

我对 Backbone 和 Underscore 比较陌生,并且有一个并不是真正问题的问题 - 只是出于好奇而困扰我。

我构建了一个非常简单的应用程序,它允许您在集合中添加和删除模型并在浏览器中呈现它们。它还有能力console.log收藏(所以我可以看到我的收藏)。

奇怪的是:生成的 ID 是 1,3,5...等等。是否有特定于我的代码的原因,或者与 BB/US 有关?

这是一个有效的 fiddle :http://jsfiddle.net/ptagp/

和代码:

App = (function(){

var AppModel = Backbone.Model.extend({

defaults: {
id: null,
item: null
}

});

var AppCollection = Backbone.Collection.extend({

model: AppModel

});

var AppView = Backbone.View.extend({

el: $('#app'),

newfield: $('#new-item'),

initialize: function(){
this.el = $(this.el);
},

events: {
'click #add-new': 'addItem',
'click .remove-item': 'removeItem',
'click #print-collection': 'printCollection'
},

template: $('#item-template').html(),

render: function(model){
var templ = _.template(this.template);
this.el.append(templ({
id: model.get('id'),
item: model.get('item')
}));
},

addItem: function(){
var NewModel = new AppModel({
id: _.uniqueId(),
item: this.newfield.val()
});
this.collection.add(NewModel);
this.render(NewModel);
},

removeItem: function(e){
var id = this.$(e.currentTarget).parent('div').data('id');
var model = this.collection.get(id);
this.collection.remove(model);
$(e.target).parent('div').remove();
},

printCollection: function(){
this.collection.each(function(model){
console.log(model.get('id')+': '+model.get('item'));
});
}

});

return {
start: function(){
new AppView({
collection: new AppCollection()
});
}
};

});

$(function(){ new App().start(); });

最佳答案

如果您查看backbone.js 源代码,您会注意到_.uniqueId 用于设置模型的cid :
https://github.com/documentcloud/backbone/blob/master/backbone.js#L194

这意味着每次创建模型实例时,_.uniqueId()被调用。
这就是导致它增加两次的原因。

关于backbone.js - 主干/下划线 uniqueId() 奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com