2014-10-08 60 views
0

我想使用帶有下劃線模板和骨幹的輔助函數。 現在我做這種方式:骨幹使用帶有幫助程序的下劃線模板

查看:

var View = Backbone.View.extend({ 
    // ... 
    template: getTpl('#b_ezlo', 1), 
    // ... 
    render: function(){ 
     this.$el.html(this.template(this.model.toJSON())); 
    } 
}); 

模板消氣: 在這裏,我通常會返回模板,用輔助功能一起。 問題是,當我做prepare我不能返回輔助功能,因爲它需要還返回其他變量的模板,它會導致undefined getDisabledState:模板

function getTpl(tpl, options) { 
    if (!tpl) return; 
    if (!options) options = null; 
    var prepare = false; 
    if (options == 1) { 
     // this is called on View initialization 
     // with template: getTpl('#b_ezlo', 1), 
     options = {}; 
     prepare = true; 
    } 

    var viewHelpers = {} 

    if (tpl == "#b_view") { 
     console.log("prepare", prepare); 
     viewHelpers.getDisabledState = function() { 
      if (typeof options.disabled != "undefined") { 
       return options.disabled; 
      } else { 
       return ''; 
      } 
     } 
    } 

    _.extend(options, viewHelpers); 

    if (prepare) { 
     return _.template($(tpl).html()); 
    } else { 
     return _.template($(tpl).html())(options); 
    } 
} 

部分以及(玉),我想使用助手:

.icon-block(data-disabled!="<% if (typeof getDisabledState != 'undefined') {getDisabledState()} %>") 

我不喜歡這裏if (typeof getDisabledState != 'undefined')的一部分,這是不不錯的模板。

所以,如果有任何其他方式來準備與輔助功能模板?

+1

我覺得你可以在MarionetteJS籤同一個任務的實現。有templateHelpers功能非常接近您的任務。 – Evgeniy 2014-10-08 07:39:54

+1

Backbone + Marionette + Handlebars架構如何?把手在'registerHelper'中有一個構建,你可以聲明你的定製助手。 – 2014-10-08 08:09:15

+0

謝謝,@Evgeniy。也許應該這樣做,他們定義視圖內的幫助者。 – 2014-10-08 08:10:53

回答