继承和扩展骨干中的父方法

时间:2014-07-22 17:09:42

标签: backbone.js

我有一个userdetail主干视图和模板。示例代码是

define(
        ['framework/baseclass'],

        function(baseclass) {
            var UserDetails = myModule();

            UserDetails.Model = Backbone.Model.extend({
                    //
            });

            UserDetails.Views.Content = Backbone.View
                    .extend({
                        template : "UserDetails",

                        initialize : function() {
                            //model
                        },

                        events : {

                        },


                        render : function(manage) {

                        },

                        renderOnceDomIsReady : function() {
                            createUserDetailPage();
                        },

                        createUserDetailPage: function(){
                            //use the html template and populate with data and additional look and feel
                        }
                    },

                        addNewUser: function()
                        {
                        },
                    });


        });

将向用户显示该视图以输入其详细信息以创建帐户。

我有一个管理员视图,其中我想向管理员用户显示userdetail视图,显示用户帐户详细信息以及html模板中的一些其他元素,这些元素将在重写的“userdetail”视图中包含事件< / p>

用户详细信息模板不会向非管理员用户显示帐户功能,而当管理员用户通过管理员视图查看此功能时,他们将能够查看此类功能。

有人可能会争辩说为什么不在我的原始代码中加上一个标志来识别非管理员和管理员帐户,然后根据它显示功能。但是我有限制

阻止我进行此类代码更改。因此,这种将现有代码保持原样的考察,研究从现有代码继承并提供附加功能的方法

1 个答案:

答案 0 :(得分:0)

要创建从其他视图继承的视图,您需要做的就是扩展父视图。如果你想调用父方法,你可以使用它的原型。

例如

UserDetails.Views.AdminContent = UserDetails.Views.Content.extend({

      template:'AdminDetails' //this will override the parent template property


        events: _.extend({
           //add new events here 

        }, UserDetails.Views.Content.prototype.events), 

        initialize : function(options) {
              //model
              UserDetails.Views.Content.prototype.call(this,options);
        }
});