AngularJS-在app.config中对动态数据进行$StateProvider查询
这是可行的,但Json不是我想要检索数据的方式:AngularJS-在app.config中对动态数据进行$StateProvider查询,angularjs,breeze,Angularjs,Breeze,这是可行的,但Json不是我想要检索数据的方式: var states = [ { name: 'main', url: '/', templateUrl: '/views/main.html', controller: 'MainCtrl' }, { name: 'login', url: '', templateUrl: '/views/login-form.html', controller: 'LoginCtrl' }, { name: 'logout', url: '', templa
var states = [
{ name: 'main', url: '/', templateUrl: '/views/main.html', controller: 'MainCtrl' },
{ name: 'login', url: '', templateUrl: '/views/login-form.html', controller: 'LoginCtrl' },
{ name: 'logout', url: '', templateUrl: '', controller: 'LogoutCtrl' },
{
name: 'sales',
url: '',
templateUrl: '/views/sales-data.html',
controller: 'SalesDataCtrl',
resolve: {
user: 'User',
authenticationRequired:
['user', function(user) { user.isAuthenticated(); }]
}
}
];
angular.forEach(states, function (state) {
$stateProvider.state(state.name, state);
});
app.config(['$locationProvider', '$resourceProvider', '$stateProvider', function ($locationProvider, $resourceProvider, $stateProvider) {
$locationProvider.html5Mode(true);
not working ---> var states = $resource('http://localhost:9669/api/breeze/states').query();
angular.forEach(states, function(state) {
$stateProvider.state(state.name, state);
});
}]);
这在检索数据时不起作用:
var states = [
{ name: 'main', url: '/', templateUrl: '/views/main.html', controller: 'MainCtrl' },
{ name: 'login', url: '', templateUrl: '/views/login-form.html', controller: 'LoginCtrl' },
{ name: 'logout', url: '', templateUrl: '', controller: 'LogoutCtrl' },
{
name: 'sales',
url: '',
templateUrl: '/views/sales-data.html',
controller: 'SalesDataCtrl',
resolve: {
user: 'User',
authenticationRequired:
['user', function(user) { user.isAuthenticated(); }]
}
}
];
angular.forEach(states, function (state) {
$stateProvider.state(state.name, state);
});
app.config(['$locationProvider', '$resourceProvider', '$stateProvider', function ($locationProvider, $resourceProvider, $stateProvider) {
$locationProvider.html5Mode(true);
not working ---> var states = $resource('http://localhost:9669/api/breeze/states').query();
angular.forEach(states, function(state) {
$stateProvider.state(state.name, state);
});
}]);
我的问题有两个方面:
var states = [
{ name: 'main', url: '/', templateUrl: '/views/main.html', controller: 'MainCtrl' },
{ name: 'login', url: '', templateUrl: '/views/login-form.html', controller: 'LoginCtrl' },
{ name: 'logout', url: '', templateUrl: '', controller: 'LogoutCtrl' },
{
name: 'sales',
url: '',
templateUrl: '/views/sales-data.html',
controller: 'SalesDataCtrl',
resolve: {
user: 'User',
authenticationRequired:
['user', function(user) { user.isAuthenticated(); }]
}
}
];
angular.forEach(states, function (state) {
$stateProvider.state(state.name, state);
});
app.config(['$locationProvider', '$resourceProvider', '$stateProvider', function ($locationProvider, $resourceProvider, $stateProvider) {
$locationProvider.html5Mode(true);
not working ---> var states = $resource('http://localhost:9669/api/breeze/states').query();
angular.forEach(states, function(state) {
$stateProvider.state(state.name, state);
});
}]);
谢谢。[解决方案] 关于这件事的文档是零碎的,但在把各种帖子拼凑在一起之后,我找到了答案 首先,您必须了解,$stateProvider中不能填充数据,因为它是app.config的一部分,因为app.config仅初始化提供程序,实际的http服务必须在app.run中执行 步骤1:在app.module之前声明2个全局变量,即$stateProviderRef和$urlRouterProviderRef引用,并在app.config中将实际的$stateProvider和$urlRouterProvider引用传递给它们: 步骤2:创建自定义工厂提供程序: 步骤3:在app.run中调用自定义提供程序:
app.run(['$q','$rootScope','$state','$urlRouter','menuItems',',
函数($q、$rootScope、$state、$urlRouter、menuItems){
breeze.core.extendedq($rootScope,$q);
menuItems.all().success(函数(数据){
角度.forEach(数据、函数(值、键){
var stateName='state_u2;'+value.OrderNum//