Добрый день!
Есть фабрика
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
Разве содаётся новый экземпляр фабрики для моего вызова вне контекста?