【问题标题】:ember action reference to buttonember 对按钮的操作引用
【发布时间】:2013-05-02 07:34:12
【问题描述】:

在jquery中当你为一个按钮指定一个点击处理程序时,你可以参考this来获取被点击的按钮。但是,当您使用{{action blah}} 时,this 指的是控制器。有什么方法可以在无需查询的情况下获取该按钮?并不是说很难做到$("#myButton") 只是好奇...

App.MyController = Em.Controller.extend({
    buttonClicked:function() {
        //this.?
    }
})

【问题讨论】:

  • 但是我必须创建一个 Ember.View 并覆盖它。我的动作在控制器中。我有一个简单的 html 按钮,似乎我应该能够获得它而无需为其编写 View 扩展......不是吗?

标签: jquery ember.js action


【解决方案1】:

{{action}} 接受一个参数,除了动作名称。所以你可以这样做:{{action "blabla" "blabla"}} 并将其用于:

blabla: function(param) {
  if (param === 'blabla') {
    // action handler here
  }
}

【讨论】:

  • 你好,ham145 :) 刚刚用{{action login this}} 尝试过,参数未定义。我错过了什么吗?
  • 您好!我使用文字,所以:{{action "login" "manual"}},并简单地使用login: function( type ) 进行处理。不确定传递对象。
【解决方案2】:

我相信这需要一个视图,它不仅可以简化您的代码,还可以使其更易于维护。控制器旨在操作数据并使用您发送的数据响应事件。它不应该知道它所关联的视图。

所以在一个视图上你可以这样做:

App.SpecialButtonView = Ember.View.extend
  click: ->
    #Handle your action here

然后,如果您必须使用数据进行某些操作,则可以执行 @get("controller").send("doSomething") 之类的操作。

【讨论】:

  • 虽然简单的$("button.class") 也同样有效。
猜你喜欢
  • 2015-11-05
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多