我有一个包含关闭按钮的视图:
.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!"
这些方法都不起作用。也许甚至不可能像控制器一样向视图发送动作?如果没有,我还能怎样处理这个问题?
答案 0 :(得分:4)
向视图发送事件的语法是{{action myEvent target="view"}}
。然后,相应视图中的myEvent
处理程序可以处理此事件。如果没有目标,事件将在该视图的上下文中转到控制器。
我怀疑发生的事情是Emblem
将target
属性放在元素本身而不是动作处理程序中。由于target
也是有效属性。您可以通过查看开发工具的Elements选项卡中生成的html来确认这一点。
不幸的是,我没有使用Emblem的解决方法。但这些东西肯定适用于Handlebars模板。
答案 1 :(得分:1)
Emblem中的正确代码为click="removeFlash target='view'"
,您不能将其分为两个属性。
同样在您的控制器/视图中,您需要将removeFlash作为actions对象的一部分。
Whistlr.AlertView = Ember.View.extend
templateName: "_alert"
actions:
removeFlash: ->
alert "Close!"