2013-07-12 5 views
3

В настоящее время мой сайт включает строку поиска в моем файле index.ejs, который использует {{action createSearch}} для вызова функции «createSearch» моего контроллера, когда пользователь нажимает кнопку ввода или нажимает на мой поиск кнопка. Это прекрасно работает! Теперь я тестирую новую функциональность и хочу вызвать функцию newSearch непосредственно из моего файла index.ejs без какого-либо взаимодействия с пользователем. Я попытался использовать 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

'events' устарел в Ember 1.0, но вместо этого вы можете использовать' actions'. – splattne

Смежные вопросы