У меня есть угловой маршрутизатор, который использует функцию разрешения и звонит в службу MyService
.Minifier confusing variable name
var Router = function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state(home, {
resolve:{
myFactory: 'MyFactory',
checkUser: function(myFactory){
return myFactory.getUser().then(function(data){
// some logic with data
});
}
},
});
};
module.exports = ['$stateProvider', '$urlRouterProvider', Router];
Когда я запускаю его через Minifier, я в конечном итоге с:
var e = function(t, e) {
t.state(home, {
url: "/home",
resolve: {
myFactory: "MyFactory",
checkUser: function(t){
return t.getUser().then(function(e){
});
}
},
})
}
;
t.exports = ["$stateProvider", "$urlRouterProvider", e]
Проблема здесь переменные t
и e
.
На верхнем уровне:
t = $stateProvider
e = $urlRouterProvider
Однако, в моей resolve
, t
и e
используются снова, но:
t = $stateProvider but should = myFactory
e = $urlRouterProvider but should = data
И так t.getUser
или t.getProducts
на самом деле не существует, и, таким образом мои приложение не загружается.
UPDATE:
Аннотированной версия:
var Router = function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state(home, {
resolve:{
myFactory: 'MyFactory',
checkUser: ['myFactory', function(myFactory){
return myFactory.getUser().then(function(data){
// some logic with data
});
}]
},
});
};
module.exports = ['$stateProvider', '$urlRouterProvider', Router];
Я не вижу вашу проблему. В 'resol',' t' - это имя параметра функции checkUser, поэтому любой, кто называет 'checkUser', несет ответственность за предоставление правильного аргумента. –
@ammoQ - спасибо за информацию, ничего в приложении вызывает checkUser, getUser() и getProducts вызываются при загрузке маршрутизатора. –
Извините, моя вина. Прежде всего, нужно было узнать об угловом механизме инъекции. Нашли это: https://docs.angularjs.org/tutorial/step_05, и это: https://docs.angularjs.org/guide/di - оба упоминают проблемы, связанные с аннотацией минимизации и неявной зависимости. –