javascript - 如何从 backbone.js 中的集合调用模型方法?

标签 javascript jquery backbone.js

这些天我一直在努力学习 backbone.js。我拥有的是一个模型和一个集合。该模型中定义了一些我想在集合中获取的默认属性。这是我的代码:

var model = Backbone.Model.extend({
    defaults : {
        done : true
    }
});

var collection = Backbone.Collection.extend({
    model : model,  

    pickMe : function () {
        log(this.model.get('done')); //return undefined
    }   
});

var col = new collection();
col.pickMe();

如何从集合中调用模型中定义的方法?我在这里做错了吗?

最佳答案

Backbone 的基本设置是这样的:

您的模型是集合的一部分。所以在你的设置中你有一个模型构造函数 model 和集合构造函数 collection,但是你的集合中没有模型,如果你有任何模型,它们将是一个数组,所以你的代码应该是这样的

var model = Backbone.Model.extend({
    defaults : {
        done : true
    }
});

var collection = Backbone.Collection.extend({
    model : model,  

    pickMe : function () {
        for ( i = 0; i < this.models.length; i++ ) {
            log(this.models[i].get('done')); // this prints 'true'
        }
    }   
});

// Here we are actually creating a new model for the collection
var col = new collection([{ name : 'jack' }]); 

col.pickMe();

您可以在此处查看工作中的 jsFiddle:http://jsfiddle.net/S8tHk/1/

关于javascript - 如何从 backbone.js 中的集合调用模型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410167/

相关文章:

javascript - JS reduce()方法语法理解

javascript - 在 iPad 上,如何在不显示选项的情况下通过 Javascript 事件在选择元素上设置 focus()?

javascript - 如果选中其他复选框,则禁用复选框

backbone.js - Marionette 多用户/角色应用程序

javascript - Backbone.js URL 路由

javascript - 如何检查Google表单是否已提交?

javascript - 如何从 Javascript 函数访问在 HTML 隐藏输入中声明的数组?

javascript - div 不随动态内容增长

javascript - 无法与 javascript 中的 php echo 输出进行比较(jquery-post)

javascript - BackboneJS - 多级继承父类(super class)的可能回调?