Кажется ли это лучшим / правильным способом сделать наследование представления backbone.js - PullRequest
0 голосов
/ 20 октября 2011

это своего рода продолжение вопроса, который я задал

Backbone.js Наследовать Просмотры

но это стало немного грязно, и теперь у меня есть решение, я просто хотел бы, чтобы кто-нибудь сказал мне, если я сумасшедший

я делаю следующее:

dci.Controller = Backbone.View.extend({
defaults:function(){
    return {
        views:{},
        modules:{},
        isDestroyed:false,
        destroy:function(){
            if(this.isDestroyed){return;}
            this.isDestroyed = true;
            $.each(this.views,function(i,item){
                item.remove();
            });
            $.each(this.modules,function(i,item){
                item.destroy();
            });
        }
    }
}

});

затем я делаю это, чтобы использовать контроллер:

dci.AssetController  = dci.Controller.extend({
events:_.extend({ 
    // whatever events here
}, dci.Controller.prototype.events),

initialize:function(options){
    $.extend(this,this.defaults());
}
});

наконец, я создаю следующий экземпляр:

var controller = new dci.AssetController(someOptions);   

так что теперь на моем контроллере var у меня есть коллекция представлений и модулей, которые являются уникальными для каждого экземпляра, поэтому, если у меня есть два dci.AssetCotrollers по какой-то причине (на самом деле я использую ту же модель для модулей, и это когда несколько экземпляров одного и того же класса) каждый из них имеет свою собственную коллекцию представлений и модулей.

это убивало меня некоторое время, но я думаю, что это сработает, и я особенно хотел бы поблагодарить Брайана Дженизио, который привел меня на этот трек в вышеупомянутом, как.

Теперь, пожалуйста, скажите мне, если это сумасшедший шаблон. Спасибо, Раифа

1 Ответ

0 голосов
/ 10 ноября 2011

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

Во-вторых, я не понимаю, как выустанавливают isDestroyed.

В общем, создание иерархических представлений звучит для меня хорошо (пока я продолжал делать это вручную).Не уверен, как вы используете переменные модулей, хотя.Иначе, в представлениях без оболочки я думаю, что это слишком много дополнительного кода инициализации.

...