2014-11-14 129 views
0

我正在使用Jaggery.js編寫一個web應用程序,並使用caramel作爲MVC框架。焦糖使用把手作爲渲染引擎,以便我們可以使用任何內置的助手提供的手柄,如{{#each}}, {{#if}}焦糖如何註冊手柄幫手?

但我怎麼寫我的自定義助手和註冊焦糖,所以焦糖可以使用它呈現在模板?

有沒有關於這方面的任何樣本?

在此先感謝!

+0

我有Caramell某一首歌只是通過閱讀你的問題困在我的頭上。今天將是漫長的一天... –

回答

1

我發現了一種方法來註冊焦糖幫手的手柄,它可以工作,但不知道是否是正常和正確的解決方案。

我在做什麼是註冊在焦糖theme.js助手(jaggeryapps \ MYAPP \主題\ mytheme的\ theme.js),代碼如下圖所示:

var engine = caramel.engine('handlebars', (function() { 
    return { 
     partials: function (Handlebars) { 
      var theme = caramel.theme(); 
      var partials = function (file) { 
       (function register(prefix, file) { 
        var i, length, name, files; 
        if (file.isDirectory()) { 
         files = file.listFiles(); 
         length = files.length; 
         for (i = 0; i < length; i++) { 
          file = files[i]; 
          register(prefix ? prefix + '.' + file.getName() : file.getName(), file); 
         } 
        } else { 
         name = file.getName(); 
         if (name.substring(name.length - 4) !== '.hbs') { 
          return; 
         } 
         file.open('r'); 
         Handlebars.registerPartial(prefix.substring(0, prefix.length - 4), file.readAll()); 
         file.close(); 
        } 
       })('', file); 
      }; 

      partials(new File(theme.resolve('partials'))); 


      Handlebars.registerHelper('my-for', function(n, block) { 
       var ret = ''; 

       for(var i = 0; i < n; ++i) { 
        ret += block.fn(i); 
       } 

       return ret; 
      }); 

     }, 
    }; 
}()));