目前,我的网站在我的index.ejs文件中包含一个搜索栏,当用户按下回车或点击我的搜索按钮时,该文件使用{{action createSearch}}来调用我的控制器的“createSearch”功能。这很完美!现在我正在测试新功能,并希望直接从我的index.ejs文件调用我的newSearch函数,而无需任何用户交互。我已经尝试在加载时使用jquery模拟按键/按键但是控制器但是似乎没有调用动作事件。
编辑:包含功能index.js代码
{{view Ember.TextField id="new-search" placeholder="enter a few keywords"
valueBinding="newSearch" action="createSearch"}}
<div id="gobutton" {{action createSearch}}><div id="gobutton_inner">SEARCH</div></div>
答案 0 :(得分:3)
对于像这样的系统级操作,最好使用ApplicationRoute
上的事件。您的控制器/视图可以发送类似createSearch
的事件,路由通常通过知道如何执行此操作的控制器来处理。
App.ApplicationRoute = Em.Route.extend({
events: {
createSearch: function(query) {
var controller = this.controllerFor('search');
controller.doSearch(query);
}
}
});
从任何控制器的操作处理程序,您可以使用
触发事件this.send('createSearch', query);
或者从视角来看,
this.get('controller').send('createSearch', query);
您需要连接各个动作处理程序以执行此事件触发。