javascript - 填充主干中的集合

标签 javascript backbone.js

我有一个主干集合,我想创建一个填充该集合的方法。我发现的是推送方法,但这需要迭代所有项目:

define([
    ...
], function($, _, Backbone, imagesCollection, imageTemplate, gridView) {
    var AppView = Backbone.View.extend({
        el: '#container',
        template: _.template( imageTemplate ),
        events: {
            'click #search': 'search'
        },
        initialize: function() {
            this.input = this.$('#search-term');
        },
        populate: function(data) {
                for (var i=0;i<data.length;i++) {
                    imagesCollection.push(data[i]);
                }
                //IS THERE ANY WAY TO PREVENT ITERATING OVER ALL THE ITEMS?
        },
        search: function() {
            $.ajax({
                type: 'get',
                url: myurl,
                dataType:'jsonp',
                success: function(response){
                    populate(response);
                }
            });
        }
    });

    return AppView;
});

还有其他解决办法吗? 我是 Backbone 新手,所以如果您发现任何问题 - 请告诉我。

最佳答案

至少有两种方法可以填充主干集合,而无需在我自己的代码中进行迭代。

方法add(它附加您传入的模型)

populate: function(data) {
    imagesCollection.add(data); // old models will be preserved
}

方法重置(用您提供的新模型替换集合中的所有模型)

populate: function(data) {
    imagesCollection.reset(data); // new models will erase the old ones
}

参见http://backbonejs.org/#Collection-resethttp://backbonejs.org/#Collection-add

关于javascript - 填充主干中的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13031802/

相关文章:

Javascript 在三元运算符中使用单个等待

javascript - node.js/从响应写入文件

javascript - 主干路由器无法显示 View

javascript - Backbone-relational 不能实例化两个 RelationalModel 对象

javascript - 静态函数继承

javascript - 检查用户是否使用 IE

javascript - 使用 RequireJS 实现持久/可访问的 BackboneJS 模型

javascript - Marionette LayoutView 不渲染

javascript - Backbone 应用组织

javascript - jQuery 连续鼠标按下