2014-11-14 47 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; 
      }); 

     }, 
    }; 
}()));