@schurin
Люблю катать с гор, особенно на санках

Почему фабрика хранит старое значение переменной при обращении вне контекста angular?

Добрый день!
Есть фабрика
app.factory('headerMode', ['modal2', function(modal2) {
		var _mode = 'init';
		return {
			setMode: function(mode) {
				_mode = mode;
			},
			checkHistory: function() {
				if(_mode === 'history'){
					modal2.show();
				}
			},
			checkParameters: function(){
				return _mode === 'parameters'
			}
		}
	}])


D контроллере висит $watch при измененной переменной вызывает setMode вышепредставленной фабрики, сама фабрика служит для обмена состоянием одного единственного компонента, setModeвызывается только в 1м месте.
Если заинжектить фабрику к другому контроллеру, и вызвать checkHistory или checkParameters всё хорошо, значение _mode ровно то что и пришло в setMode ранее, либо 'init', если состояние не изменялось.
Но если вызвать вне контекста angular
angular.injector(['ng', 'myapp']).get('headerMode').checkHistory()

или
angular.injector(['ng', 'myapp']).get('headerMode').checkParameters()

внутри фабрики _mode всегда в состоянии 'init', даже если мы его изменили через _setMode
Разве содаётся новый экземпляр фабрики для моего вызова вне контекста?
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы