【问题标题】:Action helper won't work inside handlebar's {{#if}}动作助手在车把的 {{#if}} 内不起作用
【发布时间】:2013-08-16 17:15:36
【问题描述】:

我有一个 machine_list_item.html 模板,其中包含这段代码:

{{#if view.machine.isGhost}}
<div class="remove-machine-key-association">
    <button {{action "aloha" target="view"}}></button>
</div>
{{/if}}

我在 machine_list_item.js 视图中有这个函数:

aloha: function() {
    alert('Tadah!');   
}

按钮不会调用函数,会报这个错误:

错误:断言失败:Mist.MachineListItemView 上不存在操作“aloha”

但是,如果我注释掉车把的 {{#if}} 结构,代码就可以正常工作了。

任何帮助将不胜感激!

【问题讨论】:

    标签: javascript html button ember.js handlebars.js


    【解决方案1】:

    使用{{#linkTo}} ... {{/linkTo}} 隐式创建一个视图。许多车把块都是这样做的。因此,... 中任何引用 view 的内容实际上都是指 LinkToView。

    要解决此问题,请使用 {{#with ... as ...}} 重命名您的视图,使其不会被遮蔽。

    {{#with view as myView}}
      {{#linkTo 'machine' myView.machine}}
        {{#if myView.machine.isGhost}}
          <div class="remove-machine-key-association">
            <button {{action "aloha" target=myView}}></button>
          </div>
        {{/if}}
      {{/linkTo}}
    {{/with}}
    

    更多详情请见this question

    【讨论】:

      【解决方案2】:

      我猜你在其他地方有问题,这里有一个简单的例子,它是如何正常工作的:http://jsbin.com/IhojaYE/2/edit

      希望对你有帮助。

      【讨论】:

      • ember 应用程序非常庞大。我只需要知道这个“其他地方”可能在哪里:)
      • @GiwrgosTsopanoglou,你应该发布更多代码然后我猜:)
      • 该项目包含40多个文件,您愿意阅读所有这些代码吗? :P
      • github.com/mistio/mist.io/tree/keys 我正在处理的代码尚未提交,但所有相关文件都在那里。路径是 src/mist/io/static/js/app
      • @Giwrgos Tsopanoglou 我注意到在app.js 中的路由中,您在覆盖exit 时没有调用this._super()。这可能会导致您的视图出现问题,因为这就是 Ember 删除视图的地方。或者,您可以覆盖 deactivate 挂钩。
      猜你喜欢
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多