如果无法做到这一点,我愿意接受任何解决方案。
我有一个alerts
工厂,其中包含一个数组,其中填充了app.run
上API调用的提醒。
我还有一个units
控制器,它将$scope.unit_alerts
变量设置为与该特定单元页面关联的警报。问题是,大约10%的时间,单元控制器尝试在alerts
工厂加载API调用之前设置范围变量,从而导致未定义的错误。
我知道在解决承诺之前使用UI路由器阻止页面加载,但在这种情况下,我需要在整个应用程序中提供警报,无论unit
页面是否为第一个加载页面。因此,我不能将依赖项放在单元路由中,因为它不适用于应用程序的其余部分。
angular.module('app').run(['alerts,function(alerts){
// some code to get user and units
alerts.populate(user._id, units)
}];
angular.module('app').factory('alerts, function($http){
var o = {};
o.alerts = [];
o.populate = function(user_id, units){
return $http.get('/api/users/alerts/' + user_id).then(function(res){
res.data.forEach(function(alert){
o.alerts.push(alert);
});
});
});
return o;
});
angular.module('app').config(['stateProvider', function($stateProvider){
$stateProvider.state('units', {
url: '/units/{id}',
templateUrl: '../unit.html',
reloadOnSearch: false,
controller: 'UnitsCtrl',
resolve: {
unit: ['$stateParams', 'units',
function ($stateParams, units) {
return units.get($stateParams.id);
}
]
}
});
});
angular.module('app').controller('UnitsCtrl', ['alerts', function(alerts){
$scope.unit_alerts = alerts.alerts
});