переопределить коллекцию-выборку Backbone

Я хочу получить свою коллекцию без особых проблем, поэтому я решил переопределитьCollection.fetch с

App.carClc = Backbone.Collection.extend({
    model : App.cardModel,
    url : 'http://localhost/bbtest/data.php',
    fetch : function() {
        $.ajax({
            type : 'GET',
            url : this.url,
            success : function(data) {
                console.log(data);
            }
        });
    }
});

Я нене знаю, как настроить мою коллекцию в ответ. Я'Я новичок в BackboneJS, спасибо всем вам!

 Daniel.Woo16 нояб. 2012 г., 09:50
серверная частьстиль не RESTful
 Moszeed13 нояб. 2012 г., 11:10
я не понимаю зачем писать собственный $ .ajax? сделайте это без вашего кода!?!? ..

Ответы на вопрос(5)

ых. Позволять'скажем, вы хотите заменить все данные сбора входящими данными и для этого использовать сброс:

 App.carClc = Backbone.Collection.extend({
model : App.cardModel,
url : 'http://localhost/bbtest/data.php',
fetch : function() {
    // store reference for this collection
    var collection = this;
    $.ajax({
        type : 'GET',
        url : this.url,
        dataType : 'json',
        success : function(data) {
            console.log(data);
            // set collection data (assuming you have retrieved a json object)
            collection.reset(data)
        }
    });
}
})
 Daniel.Woo13 нояб. 2012 г., 10:58
Спасибо огромное .
 max4ever20 сент. 2013 г., 12:22
collection.reset (data), искал по часам

переопределите.Backbone.ajax

ПереопределениеBackbone.ajax дает вам запросoptions это было бы нормально передано$.ajax, Вам нужно только вернуть ответ$.ajax (или какой-то другойPromise) и не надоНе нужно беспокоиться об установке материала в коллекции / модели.

$.when( $.ajax( URL, { dataType: "json" } ) )
    .then( $.proxy( function( response ) {
            ctx.view.collection.reset( response );                              
    },ctx ) );

Основной момент, которым я пользуюсьcollection.reset(data) реинициализировать коллекцию

 seebiscuit18 июн. 2014 г., 15:58
Просто точка придирки. Isn»t $ .ajax обещание, и поэтому приведенный выше код может быть переформулирован вне $ .when (), т. е. $ .ajax (...). then (...), должно работать нормально? Хорошая работа над коллекцией, все же.
Решение Вопроса

Если вы хотите добавить кастомдекоратор» вfetch, но не переопределяйте его полностью, попробуйте:

    var MyCollection = Backbone.Collection.extend({

        //custom methods

        fetch: function(options) {

            //do specific pre-processing 

            //Call Backbone's fetch
            return Backbone.Collection.prototype.fetch.call(this, options);
        }

  });    

Здесь ты нет$.ajax

Кроме того, незабытьreturn в последней строке, если вы хотите использовать обещание jQuery, возвращаемое Backbone'sfetch метод.

Увидетьhttp://japhr.blogspot.in/2011/10/overriding-url-and-fetch-in-backbonejs.html Больше подробностей.

 Chris Foster12 мар. 2013 г., 22:49
Этот ответ кажется мне намного более чистым и позволяет вам не ограничивать себя никакими другими функциями .fetch (), которые вы, возможно, захотите использовать позже.
 htmldrum02 авг. 2013 г., 20:30
Это не будет правильно звонить и создавать модели.
 ifightcrime12 июн. 2014 г., 19:18
упс, вы получили это извините. Я просматривал слишком быстро и необращаю внимание Они, как я обычно делаю, это просто применяют аргументыBackbone.Collection.prototype.fetch.apply(this, arguments);
 Pramod12 июн. 2014 г., 12:12
@ifightcrimeoptions это объект, а не массив. Так не должноcall использоваться вместо?
 ifightcrime12 июн. 2014 г., 00:57
не должен»это будетприменять' вместо 'вызов', так как аргументы это технически массив?
 briangonzalez10 сент. 2013 г., 00:39
@JRM Можете ли вы расширить?

лать что-то вроде этого:

fetch: function() {
    var self = this,
        deferred = new $.Deferred();

    $.get(this.url).done(function(data) {
            // parse data
        self.reset({parsed data});
        deferred.resolve(); //pass in anything you want in promise
     });
     return deferred.promise();
}

Ваш ответ на вопрос