2

我正在尝试 Ember.js,但在使用操作时我被卡住了。

如果我使用以下内容:

<button {{action "test"}}>Test</button>

并创建一个控制器:

App.NewController = Ember.ArrayController.extend({
    actions: {
        test: function() {
            console.log("test");
        },
    }
});

然后一切正常,我可以test在我的日志中看到。但是,当我尝试以下操作时:

<input type="text" {{action "test2" on="keyUp"}} />

test2并以类似的方式定义动作:

App.NewController = Ember.ArrayController.extend({
    actions: {
        test: function() {
            console.log("test");
        },
        test2: function() {
            console.log("test2");
        }
    }
});

然后它似乎不起作用。我的测试按钮正在工作,但是在阅读文档后,keyup 事件处理程序没有像我预期的那样被触发。

4

2 回答 2

3

这真的很奇怪,我会继续研究它,但你可以只使用输入助手并观察值,此外,如果你关心他们按下的是哪个键,你可以扩展文本字段并在那里获取 keyup。

http://emberjs.jsbin.com/EBoLEZe/1/edit

{{input value=name}}

  postKey: function(){
    console.log(this.get('name'));  
  }.observes('name')

另请参阅:KeyPress 事件在 Ember 中未按预期工作

于 2013-10-26T16:46:02.817 回答
1

看起来有一个错误(或至少是非常奇怪的行为)影响使用键盘事件的操作的能力。通常,非键盘事件(如默认的“单击”事件)的操作处理程序在按下修饰键时不起作用。在您的代码中,如果您添加allowedKeys="any"到您的操作助手,那么您的处理程序将被调用。

小提琴:http ://emberjs.jsbin.com/oyEpImI/2/edit?html,js,output

于 2013-10-27T13:20:15.203 回答