Как создать вложенные модели backbone.js, которые можно использовать повторно с различными базовыми методами синхронизации - PullRequest
3 голосов
/ 05 сентября 2011

Я создаю тяжелое приложение на JavaScript, которое предоставляет пользователю два разных представления.Одно представление выполняется через веб-интерфейс моего собственного приложения, и поэтому для подключения можно использовать API RESTful, другое - в гаджете OpenSocial (и, следовательно, использует API opensocial для извлечения и извлечения данных).До сих пор мы имели общий набор моделей / представлений, которые я мог бы повторно использовать как в веб-интерфейсе, так и в гаджете opensocial, и использовали миксин для замены методов синхронизации гаджета opensocial.например.

MyBaseModel = Backbone.Model.extend({
    ... typical backbone model
});

MyOpenSocialMixin = {
    sync: function(...) {
        // Sync via opensocial here
    }
};

myOpenSocialModel = MyBaseModel.extend(MyOpenSocialMixin);
myOpenSocialModel.sync(); // works on opensocial

myAppModel = new MyBaseModel();
myAppModel.sync(); // works on the normal interface

Это прекрасно работает для отдельной модели, но не работает для вложенных моделей (например, если MyBaseModel содержит несколько MySubModels).Как лучше всего справляться с этой ситуацией?Должны ли мои вложенные модели наследовать метод sync () своего родителя?Есть ли лучший дизайн шаблона?

1 Ответ

3 голосов
/ 07 сентября 2011

В конструкторе дочернего класса, безусловно, можно было бы передать родительский метод SYNC. Если метод не связан, вы можете просто скопировать его в дочерний класс так же, как это делает Backbone:

def initialize(attributes, options) {
    _.extend(this, {sync: options.parent.sync});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...