Ember JS使用TextField传递带插入换行符的参数

时间:2014-03-13 23:04:06

标签: ember.js

我有一个输入,我想在用户按Enter键时触发一个动作。我一直在使用insert-newline="actionName"来执行此操作,但是我需要将参数传递给该操作,并且我尝试执行的所有操作都会失败。

在我的模板中,我尝试了以下几行:

{{focus-input value=keywords placeholder="Search Term" insert-newline="search searchTerm"}}

{{focus-input value=keywords placeholder="Search Term" insert-newline="search, searchTerm"}}

{{focus-input value=keywords placeholder="Search Term" insert-newline="{search, searchTerm}"}}

{{focus-input value=keywords placeholder="Search Term" insert-newline="{search searchTerm}"}}

{{focus-input value=keywords placeholder="Search Term" insert-newline="search(searchTerm)"}}

在我的控制器中,我定义了操作:

search: function (searchType) {
        var search = this;

        if (searchType != "all") {
            if (search.get('keywords') != "") {
                search.send('close');
                search.transitionToRoute('/search/' + searchType + "-" + search.get('keywords').underscore());
            } else {
                search.send('close');
            }
        } else {
            search.transitionToRoute('/');
        }
    }

以及以下组件:

Books.FocusInputComponent = Ember.TextField.extend({
   becomeFocused: function () {
        var becomeFocused = this;

        becomeFocused.$().focus();
    }.on('didInsertElement')
});

我已经四处寻找答案,但是我找不到任何关于使用内联insert-newline方法将参数传递给动作的方法。

1 个答案:

答案 0 :(得分:0)

您可以将控制器传递到组件中,如下所示:

{{focus-input value=keywords placeholder="Search Term" searchControllerBinding="controller"}}

然后在你的组件中有一个keypress()处理程序来调度搜索:

Books.FocusInputComponent = Ember.TextField.extend({
   becomeFocused: function () {
        var becomeFocused = this;

        becomeFocused.$().focus();
    }.on('didInsertElement'),

    keyPress: function() {
       this.get('searchController').search(this.value);
    }
});