Переопределение функции выборки модели Backbonejs

Я использую Backbonejs для создания приложения для головного устройства автомобиля. Я хочу сохранить некоторые из моих моделей, используя функции чтения/записи фреймворка, а не HTTP-запросы.

Глядя на документацию по методу fetch на backbonejs.org, не так много объяснений. Я предполагаю, что мне просто нужно переопределить методы save() и fetch().

Это отлично работает для сохранения следующим образом:

save: function () {
    var json = this.toJSON();
    console.log('Saving model state: ' + JSON.stringify(json));
    sdk.save_json_file('my_model.json', json);
}

Что касается извлечения, я не совсем уверен, как это должно выглядеть. Я пробовал:

fetch: function () {
    var json = sdk.read_json_file('my_model.json');
    return json;
}

Может ли кто-нибудь показать мне, как правильно это сделать?


person Danny    schedule 19.02.2013    source источник
comment
Вместо этого вы можете рассмотреть возможность переопределения Model#sync. Переопределение save и fetch потребует от вас повторения большей части внутренней логики этих методов, если вы хотите, чтобы модели работали согласованно, как и другие модели Backbone.Models. backbonejs.org/#Model-sync   -  person jevakallio    schedule 19.02.2013


Ответы (2)


Пожалуйста, попробуйте это:

fetch: function(){
    this.set(this.parse(JSON.parse(sdk.read_json_file('my_model.json'))), {});
    return this;
}
person anhulife    schedule 19.02.2013
comment
Является ли объект sdk и его метод read_json_file реальным объектом и реальным именем метода? - person Matthew; 06.03.2013

В вашей модели вам нужно указать URL

MySampleModel = Backbone.Model.extend({
    url: 'my_model.json'

    ...
});

Теперь, если вы сделаете что-то подобное

var mySampleModelInstance = new MySampleModel();
mySampleModelInstance.fetch();

попытается загрузить ваш файл json

person marbor3    schedule 19.02.2013
comment
Это было мое первое желание, поскольку я указываю URL-адреса для других моих моделей, которые сохраняются через HTTP. Однако оказывается, что файл недоступен для принятия через функции чтения/записи sdk. - person Danny; 19.02.2013