2013-07-12 66 views
3

當我的網站在我的index.ejs文件中包含一個搜索欄時,當用戶按下Enter或單擊我的搜索時,使用{{action createSearch}}調用我的控制器的「createSearch」按鈕。這完美的作品!現在我正在測試新功能,並且希望直接從我的index.ejs文件中調用我的newSearch函數,而無需任何用戶交互。我已經嘗試使用加載jquery來模擬按鍵/點擊,但控制器,但似乎並沒有調用行動事件。通過自動執行操作調用Ember.js控制器功能

編輯:功能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

你的'index.ejs'看起來像什麼,代碼非常感謝 – intuitivepixel

+0

後續問題,從**哪裏**你想以編程方式調用你的'createSearch'行動?從另一個控制器內部也許? – intuitivepixel

回答

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

您需要連線的個人行爲處理程序要做到這一點事件觸發。

+0

Ember 1.0中不推薦使用'events',但可以使用'actions'來代替。 – splattne

相關問題