如何在把手输入组件的动作中传递参数?使用Ember.js

时间:2015-05-06 12:44:38

标签: ember.js handlebars.js

我需要使用这个输入组件:

{{input type="textarea" value=fileName class="field" action="setFileName" on="key-press"}}

但我必须传递一个参数。

我不想这样做:

<input type="textarea" {{bind-attr value=fileName}} class="field" {{action 'setFileName' param on="keyPress"}}

1 个答案:

答案 0 :(得分:1)

这是一种可以扩展内置组件以执行所需操作的方法:

export default Ember.TextField.extend({
    sendAction: function(name) {
        if (name === 'action') {
            return this._super('action', this.get('value'), this.get('otherArgument'));
        } else {
            return this._super.apply(this, arguments);
        }
    }
});

然后您可以像这样使用它:

{{custom-input otherArgument=someValue action='callback'}}

然后,执行此操作以捕获操作:

actions: {
    callback: function(value, otherArgument) {
        // value is the text in the input
        // otherArgument is the `someValue` that you passed in
    }
}