2014-11-04 3 views
0

Я рисую диаграммы (на основе высоких диаграмм), используя ember. Я хочу вызвать функцию при нажатии на точку. Я определил эту функцию внутри моего элемента ember. См jsfiddle ссылке ниже:Как вызвать действие контроллера в ember.js

{} http://jsfiddle.net/qmmvx/67/ 

При нажатии на точку, я получаю сообщение об ошибке, которое указывает App.ChartComponent является null.What это, что я здесь отсутствует?

ответ

0

Не уверен, что если использовать App.__container__.lookup, это самый умный способ, но замена App.ChartComponent.test(); на App.__container__.lookup('component:chart').send('test') решает вашу проблему. send используется для вызова любого метода из actions.

+0

Большое спасибо. Это работает. Мне также удалось заставить его работать, поместив мою функцию внутри компонента вместо контроллера. Но у меня есть другой вопрос. Если вы заметили, что в этом примере http://jsfiddle.net/qmmvx/2/, действие контроллера вызывается с помощью App.graphController. Так, как это работает ? Кроме того, каковы плюсы и минусы при заполнении данных с помощью Ember component vs Ember controller? Это правильный путь. Прошу прощения за слишком много вопросов, я новичок в ember. – Viji

+0

В вашей скрипке вы используете метод контроллера вместо действия. Это не ошибка. Использование действий - хорошая практика, если вы ссылаетесь на них из шаблона - поэтому вам не нужно указывать параметр 'target' для' {{action}} 'helper (например,' {{action myAction target = "controller" }} '- использовать метод' myAction' контроллера. Итак, если вы делаете это в шаблоне компонента, вы должны определить действие в компоненте и в контроллере, если используете его в шаблоне, соответствующем этому контроллеру. – undeletable

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