从集合中调用模型

Collection

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;
});

Model

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;
});

In one of my view , i SET the models

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

I'm trying to retrieve the MODEL from Collection so i can send the correct QUERY with the URL.

Question 1

How do i retrieve from Model from Collection

Question 2

Will the retrieved collection be the updated Model with the data i Set in View?

When you declare a Collection you need to specify a model property, something like :

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

After creating a new model you need to add it to collection (assuming you have jobsCollection created):

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

Answer 1

You can retrieve a model from a collection based on id, collection.get(id). Here JobFilterModel doesn't seem to have any id (you can set idAttribute property of Model to create custom id property). Backbone also creates unique ids at client side but I don't know how would they be of any help to you. If you want to retrieve a model based on any of model's property you can use collection.findWhere() or collection.where().

Answer 2

Yes. It will be but it depends on how link your View to Collection.