简体   繁体   中英

Calling Model from Collection

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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM