3

我有一个包含关闭按钮的视图:

.flash-message
  div class="close-button" click="view.removeFlash"
  = view view.content.thisView

视图本身显示:

Whistlr.AlertView = Ember.View.extend
  templateName: "_alert"

  removeFlash: ->
    alert "Close!"

但是,当我单击“关闭按钮”div 时,什么也没有发生。我尝试用几种不同的方式重写按钮:

click="view.removeFlash"
click="removeFlash"
click="removeFlash" target="view"

我还尝试将操作直接放在控制器中(尽管我什至不确定视图是否有控制器):

Whistlr.AlertController = Ember.ObjectController.extend
  removeFlash: ->
    alert "I work!"

这些方法都不起作用。也许甚至不可能像使用控制器那样向视图发送操作?如果没有,我还能如何解决这个问题?

4

2 回答 2

4

将事件发送到视图的语法是{{action myEvent target="view"}}. 然后myEvent相应视图中的处理程序可以处理此事件。如果没有目标,事件将转到该视图上下文中的控制器。

我怀疑正在发生的事情是Emblemtarget属性放在元素本身而不是动作处理程序中。因为target也是一个有效的属性。您可以通过在开发工具的 Elements 选项卡中查看生成的 html 来确认这一点。

不幸的是,我没有使用 Emblem 的解决方法。但是这些东西绝对适用于 Handlebars 模板。

于 2013-07-22T03:54:46.877 回答
1

Emblem 中的正确代码是click="removeFlash target='view'",您不要将其分成两个属性。

同样在您的控制器/视图中,您需要使 removeFlash 成为操作对象的一部分。

Whistlr.AlertView = Ember.View.extend
  templateName: "_alert"

  actions:
    removeFlash: ->
      alert "Close!"
于 2014-03-13T16:54:39.703 回答