ember.js - Ember CLI 中的 Handlebar 辅助语法

标签 ember.js handlebars.js ember-cli

在这篇文章中

Iterating over basic “for” loop using Handlebars.js

列出了“重复”助手的示例。


助手

Handlebars.registerHelper('times', function(n, block) {
    var accum = '';
    for(var i = 0; i < n; ++i)
        accum += block.fn(i);
    return accum;
});


模板

{{#times 10}}
    <span>{{this}}</span>
{{/times}}

我似乎不能用“CLI”方式写出来...有人可以启发我吗?

首先,它是位于 /helpers 中的它自己的帮助程序文件,并且它应该有一个破折号以便解析器识别它。 - 所以我不会明确注册它。


默认生成的助手看起来像这样 helpers/repeat-times.js(模板应该是一样的...)

import Ember from 'ember';

export function repeatTimes(input) {
  return input;
}

export default Ember.Handlebars.makeBoundHelper(repeatTimes);


因此,无需注册,无需设置名称...我只是找不到关于语法的清晰文档。 :/(我对它进行了 20 次左右的刺...)

或者我应该制作一个组件吗?如此处所建议:Block helper with ember-cli

最佳答案

@Kalman 是正确的,您不能使用 block 表示法注册绑定(bind)助手,因此在这种情况下我会推荐一个组件,即 referenced。在评论中。

但是,对于那些可能已经发现这个问题但仍想在 ember-cli 中创建 Handlebars 助手的人,您需要使用 ma​​keBoundHelper 函数。

例如,这是我使用的current-date 助手:

// app/helpers/current-date.js
import Ember from 'ember';

export default Ember.Handlebars.makeBoundHelper(function() {
  return moment().format('LL'); // Using moments format 'LL'
});

然后,在您的 Handlebars 模板中,您可以使用:

{{current-date}}

这会产生一个日期,例如 2015 年 3 月 5 日

关于ember.js - Ember CLI 中的 Handlebar 辅助语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28865379/

相关文章:

forms - 如何从我的组件中的 Ember 输入捕获输入事件?

ember.js - 检查 embelsTo() 关系在 ember 数据中是否存在

javascript - jQuery 获取父对象

ember.js - 如何将 stripe.js 添加到 ember-cli 应用程序?

javascript - 观察数组 Controller 中 ItemController 的变化

ember.js - 有没有办法使用 ember-cli 删除 bower 依赖项

model - Ember.js:如何保存模型

javascript - 有效负载(空内容类型)禁止错误 |在 ember 中从服务器下载 pdf 文件时

javascript - 当新数据加载时,masonry js 不会重新加载(Masonry JS 和 Handlebars)

javascript - 为什么 .on ('load' , function) 在 JS 模板上不起作用?