2016-07-30 2 views
1

У меня есть следующий фрагмент кода в Угловое:

$rootScope.commands.forEach(function(element, index, array){ 
      commands[element] = function() {alert(element + " Test Command!");} 
    }); 

Он работает при входе в приложение в первый раз. То есть, если я проверю объект JSON commands, он содержит записи от $rootScope.commands.

Проблема возникает, когда я обновляю страницу. Именно тогда я получаю сообщение об ошибке, которое $rootScope.commands не определено.

Почему это происходит? Очевидно, что существует разница в поведении журнала в первый раз и просто обновление страницы.

Любые идеи?

ответ

1

Когда вы входите в систему, я предполагаю, что вы устанавливаете $rootScope.commands. Когда вы обновляетесь, вы больше не называете этот код входа (поскольку вы уже вошли в систему). Все, что задано в переменных javascript, будет просто уничтожено при перезагрузке страницы и должно быть сброшено через функции инициализации.

Моя рекомендация: добавьте код запуска, используя angular.module('your_module_name').run(), и проверьте, вошел ли пользователь в систему. Если они есть, постройте $rootScope.commands еще раз.

+0

Это не столько вход в систему (по крайней мере, мне кажется это для меня). У меня есть контроллер, который вызывается, когда маршрут «/» и устанавливает '$ rootScope.commands = []' Затем я заполняю фактические записи в другом (я предполагаю) дочернем контроллере. То есть я предполагаю, что «HomeCtrl» - это самый высокий уровень, так как он называется «app.config» перед другими контроллерами, объявленными в этом 'home.html' частичном. – MadPhysicist

+1

Вы отправили сообщение «Работает, когда я впервые регистрирую заявку» – FrankerZ

+0

Да. Но я все еще смущен, почему это происходит. Что регистрируется в области видимости? – MadPhysicist

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