是否可以在 Handlebars #if 中使用函数?

2024-04-07

我有一个控制器对象,如下所示:

MyApp.objController = Ember.ArrayController.create({
  init: function(data) {
    data.isValid = function() {
      return (data.validity === "valid");
    }
    this.pushObject(MyApp.MyObj.create(data));
  }
});

我的看法是这样的:

{{#each MyApp.objController}}
  {{#if isValid}}
   <some markup>
   {{else}}
   <some other markup>
  {{/if}}
{{/each}}

我当时假设ifHandlebars 中的条件接受值和函数,但情况似乎并非如此。这真的可能吗?我只是做错了?


Handlebars if 语句仅比较某个值是否存在以及该值是否为假值(即不存在、0、空字符串等)。您必须编写自定义辅助函数。

你可以这样做

Handlebars.registerHelper('isValid', function (value, options) {
    if (value == "valid") {
        return options.fn(this);
    }
    return options.inverse(this);
});

这会注册一个块助手。如果您传入的值评估为“有效”,它将返回带有当前数据的助手后面的模板。如果它的评估结果不有效,它将返回 else 语句后面带有当前数据的模板。

然后在你的模板中你可以像这样使用它

{{#each MyApp.objController}}
    {{#isValid validity}}
        <some markup>
    {{else}}
        <some other markup>
    {{/isValid}}
{{/each}}

否则,如果您想遵循 Handlebars 的精神并执行“无逻辑”模板,请在渲染模板之前设置一个标志,指示该数据是否有效,然后使用带有该标志的 Handlebars if helper。

您还可以设置一个通用函数来处理这种情况和其他情况。请参阅我的回答handlebars.js {{#if}} 条件中的逻辑运算符 https://stackoverflow.com/questions/8853396/logical-operator-in-a-handlebars-js-if-conditional/9405113#9405113通用 if 的示例(类似于上面的答案)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 Handlebars #if 中使用函数? 的相关文章

随机推荐

  • 使用 python lxml 将多个
    标签合并为一个标签

    我有一个 python 脚本来清理抓取的 html 内容 它使用 BeautifulSoup4 并且工作得很好 最近我决定学习 lxml 但我发现教程 对我来说 更难遵循 例如我使用下面的代码来合并多个 br 标记为一个 即如果有多个 br
  • typescript:如何扩展现有模块定义?

    我有一个为 extsting npm 包编写的声明文件 但似乎没有声明一种方法 我尝试声明它 但出现错误 请帮帮我 现有 d ts 文件的结构 declare module mongoose class Document interface
  • 尝试配置新的 webpack + angular2 项目,我收到错误 TS2384:重载签名必须全部是环境或非环境

    我正在尝试配置一个新的 webpack angular2 项目 但出现一些错误 当我使用 npm start 时 我收到很多这样的错误 ERROR in reflect metadata Reflect ts 953 21 error TS
  • 将视频从OBS流式传输到运行在heroku上并使用node-media-server的rtmp服务器

    我一直在使用react redux 节点媒体服务器和json 服务器开发这个类似Twitch 的应用程序 它允许用户通过将其 OBS 配置到服务器 URL 来直接流式传输视频 音频 并且流密钥等于在 React 应用程序中创建的流的 ID
  • 无法在詹金斯中创建“新工作”,“确定”按钮呈灰色

    我正在尝试在詹金斯创建一份新工作 即使将 项目名称 和项目类型设置为 自由式 确定 按钮也会显示为灰色 如所附屏幕截图所示 我在用 Windows 7 32 bit OS Jenkins version 1 619 谁能告诉如何解决这个问题
  • 我从来没有遇到过写得好的业务层。有什么建议吗?

    我环顾四周 看到了一些很棒的代码片段 用于定义规则 验证 业务对象 实体 等 但我不得不承认 我从未见过完整的优秀且编写良好的业务层 我只知道自己不喜欢什么 却不知道什么是好的 谁能指出一些好的 OO 业务层 或出色的业务对象 或者让我知道
  • 为什么 C# 不允许静态方法实现接口?

    为什么C 要这样设计 据我了解 接口仅描述行为 并用于描述实现特定行为的接口的类的合同义务 如果类希望在共享方法中实现该行为 为什么不应该呢 这是我的想法的一个例子 These items will be displayed in a li
  • SQL-计算计数(列)的百分比

    我有下面的代码 它计算事件列中出现的次数 SELECT event count event as event count FROM event information group by event event event count a 3
  • 查找与分组[重复]

    这个问题在这里已经有答案了 我想知道 groupBy 和 ToLookup 扩展方法之间有什么区别 让我们有一个像这样的对象列表 public class Person public uint Id get set public strin
  • 将间隔小于 15 天的行分组并分配最小/最大日期

    如果不同协议的 protocol opening date 彼此相差 15 天内 我需要在名为预期开始日期的另一列中将它们显示为一个协议 我不知道如何复制我的表格 但我会尽力解释 假设一个协议的 start date 为 24 01 201
  • 如何使用卡尔曼滤波器预测测量之间的 GPS 位置

    我研究了OpenCV卡尔曼滤波器的实现 并做了一些基本的鼠标指针模拟并了解了基础 我似乎错过了在我的应用程序中使用它的一些关键点 并希望这里有人可以提供一个小例子 使用具有速度和位置的简单模型 KF statePre at
  • 构造函数生成默认构造函数吗?

    有没有办法通过反射来确定构造函数是否是编译器生成的默认构造函数 或者还有其他办法吗 令人惊讶的是isSynthetic方法不提供此信息 因此无法使用 并且没有Generated存在注释 public class JavaTest publi
  • Google App 脚本在电子表格中查找文本并返回位置索引

    我是谷歌应用程序脚本的新手 我的 JavaScript 也不是很强 但这似乎都不是问题 因为我的代码在第一次运行时可以工作 但当我尝试再次调用它时 它会失败 简而言之 我试图拥有一个可以动态查找给定范围内给定文本的函数 虽然看起来可能有一个
  • R 中的转置和合并列[重复]

    这个问题在这里已经有答案了 对 R 来说相当陌生 我有一个以下格式的数据集 A B C 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 但我想要这种格式 A 1 A 2 A 3 A 4 A 5 B 1 B 2 B 3 etc S
  • CakePHP 错误:无法配置会话,设置 session.auto_start 失败

    我收到此错误 Error CakeSessionException Unable to configure the session setting session auto start failed 我正在使用 Cakephp 2 2 4
  • iOS应用程序如何设置Core蓝牙广告率?

    我运行 iPad 的 iOS 应用程序广告过于频繁 随后似乎向我的嵌入式蓝牙 LE 设备发送垃圾邮件 该设备正在从 iPad 读取广告数据 如何减慢 iPad 的广告速度 Core Bluetooth 中的广告速率不可设置 没有公共 API
  • 将列表分为两列

    我正在尝试构建一个无序列表 如下所示 Item 1 Item 4 Item 2 Item 5 Item 3 Item 6 我有这个 HTML div class multi column ul li Item 1 li li Item 2
  • 如何从(静态)类中的类创建新的类实例?

    我是 Java 新手 有 C 经验 这就是我想做的 public final class MyClass public class MyRelatedClass public class OtherRandomClass public vo
  • Windows 10 - WAMP 橙色

    我已经在我的 Windows 10 企业计算机上安装了 WAMP 64 位服务器 不过我得到了一个橙色图标 我已经检查了以下内容 Apache gt 服务 启动 恢复服务呈灰色 停止服务呈红色 另外测试端口 80 还给了我 您的端口 80
  • 是否可以在 Handlebars #if 中使用函数?

    我有一个控制器对象 如下所示 MyApp objController Ember ArrayController create init function data data isValid function return data val