从集合中调用模型

时间:2013-11-17 09:07:40

标签: javascript php jquery backbone.js underscore.js

集合

define([
    'jquery',
    'underscore',
    'backbone'
], function($, _, Backbone){
    console.log("Loaded");

    var Jobs = Backbone.Collection.extend({
        url: function () {
            return 'http://domain.com/api/jobs?page='+this.page+''
        },
        page: 1
    });
    return Jobs;
});

模型

define([
    'underscore',
    'backbone'
], function(_, Backbone){
    var JobFilterModel = Backbone.Model.extend({
        defaults: {
            T: '1',  
            PT: '1',  
            C: '1',  
            I: '1'  
        }
    });
    // Return the model for the module
    return JobFilterModel;
});

在我的一个视图中,我设置了模型

 var jobListFilterModelUpdate = new JobListFilterModel();
            jobListFilterModelUpdate.set({value:isChecked});

我正在尝试从Collection中检索MODEL,这样我就可以使用URL发送正确的QUERY。

问题1

如何从集合中检索模型

问题2

检索到的集合是否是我在View中设置的数据的更新模型?

1 个答案:

答案 0 :(得分:1)

当您声明Collection时,您需要指定model属性,例如:

var Jobs = Backbone.Collection.extend({
        url: function () {
            return 'http://punchgag.com/api/jobs?page='+this.page+''
        },
        page: 1,
        model: JobFilterModel
    });

创建新模型后,您需要将其添加到集合中(假设您已创建jobsCollection):

var jobListFilterModelUpdate = new JobListFilterModel();
jobListFilterModelUpdate.set({value:isChecked}); 
jobsCollection.add(jobListFilterModelUpdate);

回答1

您可以根据idcollection.get(id)从集合中检索模型。此处JobFilterModel似乎没有任何ID(您可以设置idAttribute的{​​{1}}属性来创建自定义Model属性)。 Backbone还在客户端创建了独特的ID,但我不知道它们对您有什么帮助。如果您想根据模型的任何属性检索模型,可以使用collection.findWhere()collection.where()

回答2

是。它将取决于您idView的链接方式。