0

我最近将我的主干 js 文件更新到了最新版本,你知道什么东西正在破坏 - 太令人沮丧了。我在一个视图中实例化一个集合,我试图遍历集合,但它只输出集合中的最后一项无法弄清楚为什么这是我的代码

 NavView = Backbone.View.extend({  
el : $('ul'), 
initialize: function(){

 _.bindAll(this, 'render');
  this.navCollection = new NavigationCollection([ {name: "home", href: '/home'},{name: "about", href:'/about'},{name: "contact", href: '/contact'}]); 
  this.render();

},

我已经尝试了很多方法来呈现下面的集合代码

 render : function() {
  this.navCollection.each(function (item) {
        $(this.el).append("<li><a href=" + item.get("href") + ">" + item.get("name") + "</a></li>");
    }, this);
    return this; // remember this for chaining
  //also tried this method as well

 _.each(this.navCollection.models, function(item){
        //$(this.el).append("<li><a href=" + item.get("href") + ">" + item.get("name") + "</a></li>");
        $("<li><a href=" + item.get("href") + ">" + item.get("name") + "</a></li>").appendTo(this.el);
    },this)
    return this; // remember this for chaining
 },

无论哪种方式,它只输出最后一个项目联系人而不是三个项目,请参见此处http://dalydd.com/projects/backbone/backbone.html

var NavigationItem = Backbone.Model.extend({
    defaults: {
        name: '',
        href: '',
        last: false,
        id: ''
    },
    initialize: function() {

    }
});

var NavigationCollection = Backbone.Collection.extend({
    model: NavigationItem,
});

在它输出所有内容之前,但是当我将主干更新到较新版本时,它只打印出 1 - 一如既往地感谢任何帮助。

谢谢

4

1 回答 1

2

在 NavigationItem 定义中,将 id 的默认值设置为空字符串:

var NavigationItem = Backbone.Model.extend({
    defaults: {
        name: '',
        href: '',
        last: false,
        id: ''
    }
});

在 Backbone 0.9.9 中,模型以相反的顺序添加,重复的模型被拒绝,一个空字符串被接受为有效的 id,留下你收藏中的最后一个模型。删除 id 的默认值以解决您的问题

var NavigationItem = Backbone.Model.extend({
    defaults: {
        name: '',
        href: '',
        last: false
    }
});
于 2012-12-27T16:56:48.283 回答