通过自动化操作调用Ember.js控制器功能

时间:2013-07-12 20:34:09

标签: javascript jquery ember.js ejs handlebars.js

目前,我的网站在我的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>

1 个答案:

答案 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);

您需要连接各个动作处理程序以执行此事件触发。