【问题标题】:Backbone Marionette, set global BeforeRender in all viewsBackbone Marionette,在所有视图中设置全局 BeforeRender
【发布时间】:2014-03-30 23:10:51
【问题描述】:

我正在尝试在我的网站中添加语言支持,我需要添加此代码,以便在木偶渲染之前在所有视图中运行,无论哪种类型。

onBeforeRender: function(){

    var helpers = this.templateHelpers();
    this.templateHelpers = function(){
        return $.extend( (helpers), {
            lang : function () {
                return function(val, render) {
                    return lang(val);
                }
            }
        });
    }
}

我不想扩展所有视图并将这段代码放入每个视图中, 我想知道是否有办法把这段代码放在某个地方,它会在每次渲染之前运行

【问题讨论】:

    标签: javascript backbone.js frameworks marionette


    【解决方案1】:

    我认为你应该用你的代码创建一个视图 mixin 并用这个 mixin 扩展每个视图

    var LangMixin = { 
        onBeforeRender: function(){
            var helpers = this.templateHelpers();
                this.templateHelpers = function(){
                    return $.extend( (helpers), {
                        lang : function () {
                        return function(val, render) {          
                            return lang(val);
                            }                                                                       
                        }   
                    }); 
               }            
        }
    }   
    
    var YourView= Backbone.View.extend({
         // ...
    });
    
    _.extend(YourView.prototype, LangMixin);
    

    【讨论】:

      【解决方案2】:

      你应该能够用类似的东西来扩展原型

      _.extend(Marionette.View.prototype, {
      
          onBeforeRender: function(){
      
              var helpers = this.templateHelpers();
              this.templateHelpers = function(){
                  return $.extend( (helpers), {
                      lang : function () {
                          return function(val, render) {
                              return lang(val);
                          }
                      }
                  });
              }
          }
      
      })
      

      当然,这意味着如果您的其中一个 Marionette 视图定义了自己的 onBeforeRender,您将需要“手动”调用 View 原型上的实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-22
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        相关资源
        最近更新 更多