我有一个输入,我想在用户按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方法将参数传递给动作的方法。
答案 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);
}
});