2013-11-23 5 views
1

У меня есть контроллер в Эмбер так:Вызов метода контроллера в поле зрения ember.js

App.TasksController = Ember.ArrayController.extend({ 
    search: function(term){ ... } 
}) 

И у меня есть относительное представление, с полем пользовательского текста, как таковой:

App.TasksView = Ember.View.extend({ 
    searchField: Ember.TextField.extend({ 
     keyUp: function(){ this.get('controller').search() } 
    }) 
}) 

Однако я получаю сообщение о том, что такого метода нет.

мне было интересно:

  1. Как правильно вызвать метод, определенный в контроллере с точки зрения?
  2. Как отлаживать текущий активный контроллер? Если я console.log(this.get('controller')) Я получаю объект, но это очень запутанно для навигации и для того, чтобы точно понять, какой контроллер это.

ответ

1

Объем этого текста в текстовом поле не совпадает с областью задач, поэтому он не имеет доступа к контроллеру.

Честно говоря, лучший способ справиться с этим - связать значение текстового поля с чем-то и добавить к нему наблюдателя. Когда он меняет выпалить поиск (или, возможно, лучше было бы дребезга его, чтобы вы не стреляя запросы каждый символ они типа)

http://emberjs.jsbin.com/IRAXinoP/3/edit

+0

Спасибо, это заставляет меня идти дальше. Каким будет ответ на второй вопрос? Как правильно отладить, что происходит? Console.logging возвращает объекты, которые очень запутывают, как я могу устранить их из-за них? –

+0

Ember inspector работает очень хорошо, дополнительно глядя на конструктора, часто помогает выяснить, на какой тип объекта вы смотрите, прото помогает. – Kingpin2k

+0

Я закончил тем, что хотел, но вопрос стоит: в этой ситуации я могу получить доступ к контроллеру? Могу ли я передать контекст, или что-то в этом роде? –

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