Javascript 通过自动化操作调用Ember.js控制器函数
当前,我的站点在我的index.ejs文件中包含一个搜索栏,当用户按下enter键或单击我的搜索按钮时,它使用{{action createSearch}}调用我的控制器的“createSearch”函数。这很好用!现在,我正在测试新功能,并希望直接从index.ejs文件调用newSearch函数,而无需任何用户交互。我尝试过使用jquery-on-load模拟按键/点击,但控制器似乎没有调用动作事件 编辑:包含functional index.js代码Javascript 通过自动化操作调用Ember.js控制器函数,javascript,jquery,ember.js,ejs,handlebars.js,Javascript,Jquery,Ember.js,Ejs,Handlebars.js,当前,我的站点在我的index.ejs文件中包含一个搜索栏,当用户按下enter键或单击我的搜索按钮时,它使用{{action createSearch}}调用我的控制器的“createSearch”函数。这很好用!现在,我正在测试新功能,并希望直接从index.ejs文件调用newSearch函数,而无需任何用户交互。我尝试过使用jquery-on-load模拟按键/点击,但控制器似乎没有调用动作事件 编辑:包含functional index.js代码 {{view Emb
{{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>
{{view Ember.TextField id=“新建搜索”占位符=“输入几个关键字”
valueBinding=“newSearch”action=“createSearch”}
搜寻
对于这样的系统级操作,最好使用应用程序路由上的事件。您的控制器/视图可以发送类似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);
您需要连接您的单个操作处理程序来执行此事件触发。您的索引.ejs
看起来如何,代码是非常值得欣赏的后续问题,您希望从何处以编程方式调用createSearch
操作?从另一个控制器内部可能?事件
在Ember 1.0中被弃用,但您可以使用操作
。