2013-03-25 3 views
0

Я пытаюсь выполнить простое действие входа в LoginController и попытаться сохранить результат в свойстве loggedIn контроллера. В контроллере tryLogin(), когда я делаю вызов ajax и устанавливаю свойство контроллера, используя App.LoginController.loggedIn=true, который не отображается в контроллере.Свойство контроллера не обновляется

пожалуйста, проверьте этот JSBin

Я подозревавший что-то не так с моим пониманием сферы охвата, но не в состоянии решить эту

ответ

1

Вы должны установить loggedIn свойство на экземпляр контроллера, а не контроллер определение класса. Это означает, что вам необходимо использовать self.set('loggedIn', true) вместо App.LoginController.loggedIn = true.

Другая вещь, чтобы помнить, всегда использовать object.set('prop', 'val') вместо object.prop = 'val'

Вот в updated JSBin

+0

Спасибо, но в глобальном масштабе, как бы я получить экземпляр LoginController, я должен использовать экземпляр глобально ? – flash

+1

Нет, контроллеры не должны получать доступ с глобального уровня. Из маршрута используйте 'this.controllerFor ('login')', из контроллера используйте зависимость 'needs': http://emberjs.com/guides/controllers/dependencies-between-controllers/ –

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