【问题标题】:Perform actions within the with helper在 with 助手中执行操作
【发布时间】:2017-12-09 13:44:03
【问题描述】:

这里是 Ember 的新手。我试图弄清楚如何执行一个动作以及#with 助手使用该动作的产物。以下是我的代码示例:

{{#navigation-container as |navigationContainer|}} {{#with (action navigationContainer.previousPage model) as |prev|}} {{link-to (t 'navigation.previous') (concat 'course-run.' prev.modelName) prev activeClass="o25" title=prev.title}} {{/with}} {{/navigation-container}}

navigation-container 是一个公开一些动作的组件,其中一个是previousPagepreviousPage 只是返回一个模型,然后我用它来创建一些链接并与 ember-keyboard 一起使用。

我收到一条错误消息,指出由于 prev 未定义,link-to 无法构建路由。该操作正在执行并在此 with 块上方正确返回,因此我假设 with 块是问题所在。

感谢您的帮助!

【问题讨论】:

  • 可以用下面的{{#with (action navigationContainer.previousPage model) as |prev|}}代码sn-p创建一个动作;但是prev.modelName 是什么意思? prev 本身是一个函数,它不包含名为 modelName 的属性。该动作不会在具有此声明的模板中自行运行;您需要将其传递给组件并在 js 文件中执行它。如果我的理解是正确的,那么即使不是不可能,您想要实现的目标也会令人困惑。你能说出你想要达到的目标吗?您是在尝试在模板中执行操作还是某事。还有吗?

标签: ember.js htmlbars


【解决方案1】:

我想你理解错了。 with 助手不允许您执行操作。 (action navigationContainer.previousPage model) 的结果基本上是一个新的闭包函数,它将使用第一个参数 model 执行 navigationContainer.previousPage,接下来的参数是您为新函数提供的参数。

因此,如果您执行<button onclick={{action prv "bar"}}></button> 之类的操作,这将导致函数navigationContainer.previousPage 使用第一个参数model 和下一个参数"bar" 执行。

如果您想要模板中某个函数的结果,则必须使用计算属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多