继承在不同的.js文件中声明的骨干视图

时间:2014-07-24 13:13:13

标签: backbone.js

展开位于here

的原始问题

如果我的用户视图位于 Userview.js 文件中,并且我想从 AdminView.js 文件中继承该类,那么我该怎么做呢。

我尝试了this,但由于我没有课,因此无法满足我的需求。

更新1:

define([
    'modules/userdetail'
],

function(UserView) {
    var adminView
    adminView.Views.Content = UserView.Views.Content.extend({
        initialize: function() {
                 //looking to override the fn that is declared in UserView
        console.log("AAA");
        },
    });
}

更新2: 深入挖掘用户详细信息

define(
        [ 'modules/baseClass'],

        function(BaseClass) {

            // Create a new module

            //Create Model

            //Create View
            UserDetails.Views.Content = Backbone.View
                    .extend({
                        template : 

                        initialize : function() {
                            this.model = new UserDetails.Model();
                        },

                        events : {

                        },


                        render : function(LayOut) {

                            return LayOut(this).render().then(this.pageReady);
                        },

                        pageReady : function() {
                        },


                    });

                    UserDetails.activate = function() {
                        app.router.navigate('UserDetails', true);
                    };

                    UserDetails.configureRouting = function() {
                        app.router.route('UserDetails', 'UserDetails',
                        function() {
                            layoutmanager.setView('#content',
                                    new UserDetails.Views.Content())
                                    .render();
                        });
                    };


                    return UserDetails;

        });

ADMIN:

define([
    'modules/baseclass',
    'modules/UserDetail'
],

function(BaseClass, UserDetails) {


    UserDetail.Views.Content = UserDetail.Views.Content.extend({
            render:function(){
                console.log("rendering");
                UserDetail.Views.Content.prototype.render();
            }
    });


    //create admin model

    //admin view
    AdminView.Views.Content = Backbone.View.extend({

        template: "admin-template",

        events: {
        },

        initialize: function() {
            this.model = new AdminModel.Model();
        },

        render: function(manage) {
            return manage(this).render().then(this.pageReady);
        },

        pageReady: function() {

            });


        },



    AdminView.activate = function() {
        app.router.navigate('adminview', true);
    };

    AdminView.configureRouting = function() {
        app.router.route('adminview', 'adminview', function() {
            layoutmanager.setView('#content', new AdminView.Views.Content()).render();
            layoutmanager.setView('#userDetials', new UserDetials.Views.Content()).render();

        });
    };

    if(app.router && app.router.route) {
        AdminView.configureRouting();
    }

    return AdminView;
});

现在,如果我必须从管理员视图调用render的{​​{1}},userdetails方法将失败,因为参数未定义。

我不熟悉render中的段落定义为我查看代码并且没有找到任何内容

1 个答案:

答案 0 :(得分:0)

在AdminView.js的脚本标记之前包含Userview.js的脚本标记,或者使用requirejs或browserify之类的模块系统,您可以将这两个模块指定为依赖项。