【问题标题】:Writing a javascript method in controller or some other place and calling it from Handlebars在控制器或其他地方编写 javascript 方法并从 Handlebars 调用它
【发布时间】:2019-11-08 01:26:27
【问题描述】:

出于某种原因,无论我在编写什么辅助函数,它们都不能在我的 Handlebars 中工作,说它们不是辅助函数。我想要两件事:

  1. 无论如何我可以在控制器中编写函数并从 Ember 轻松调用它们吗?如果可以,请给我示例或链接或一些帮助,我该怎么做?
  2. 我可以在 ember 每个循环中分配变量等吗,例如我可以在每个外部循环中声明一个变量并在内部每个循环中分配它,然后在内循环完成后使用该分配值
  3. 由于某种原因,我的 ifCond 助手不起作用,它表示 ifCond 不是助手,是否有任何内置 if 用于比较两个值并在 ember 中返回 true 或 false,例如两个不同的字符串等

请提供任何帮助 - 谢谢。

【问题讨论】:

    标签: ember.js ember-cli


    【解决方案1】:

    1。基本上没有。您应该为此设置一个 getter/computed 属性。

    如果你有这个:

    class MyComponent extends Component {
      get foo() {
        return 10 + 50;
      }
    }
    

    你可以写{{this.foo}},它会显示60

    对于经典课程,您可以这样做:

    Component.extend({
      foo: compute(function() {
        return 10 + 50;
      }),
    })
    

    2 不。如果你想做业务逻辑,请在组件js 文件中的计算属性或getter 中进行。

    因此,如果您想要一个值列表和总和,例如,构建一个 getter(或经典样式的计算属性)产生这个总数,然后在模板中使用它。

    尽量将大部分逻辑保存在js 文件中。

    3: 使用ember-truth-helpers

    大多数人使用ember-truth-helpers。它有一个eq 助手,可以让你做{{#if (eq this.foo "something")}}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 2015-03-13
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多