Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有外部json文件的Stateprovider配置_Javascript_Angularjs_Json - Fatal编程技术网

Javascript 带有外部json文件的Stateprovider配置

Javascript 带有外部json文件的Stateprovider配置,javascript,angularjs,json,Javascript,Angularjs,Json,我正在使用angular.js和$stateProvider。我想使用states.json之类的工具来管理所有状态,而不是像我现在这样逐个编写: function configState($stateProvider, $urlRouterProvider, $compileProvider) { function resolveUrl(path){ var loadUrl = { loadModule: ['$ocLazyLoad', fu

我正在使用angular.js和
$stateProvider
。我想使用states.json之类的工具来管理所有状态,而不是像我现在这样逐个编写:

function configState($stateProvider, $urlRouterProvider, $compileProvider) {

    function resolveUrl(path){
        var loadUrl = { 
            loadModule: ['$ocLazyLoad', function($ocLazyLoad) {               
                return $ocLazyLoad.load(path);
            }]
        };
        return loadUrl;
    }

    $compileProvider.debugInfoEnabled(true);

    // Set default state
    $urlRouterProvider.otherwise("/dashboard");
    $stateProvider

    // Dashboard - Main page
    .state('dashboard', {
        url: "/dashboard",
        templateUrl: "views/dashboard.html",
        data: {
            pageTitle: 'Dashboard',
        }
    })
    .state('reports', {
        url: "/reports",
        templateUrl: "views/reports.html",
        data: {
            pageTitle: 'Reports',
        }
    })
    .state('invoices', {
      url: "/invoices",
      controller: 'invoicesCtrl',
      templateUrl: '/invoices/views/invoices.html',
      resolve: resolveUrl('/invoices/app/js/compiled/invoices_app.js')
    })
    .state('invoices.upload', {
        url: "/upload",
        controller: 'invoicesCtrl',
        templateUrl: '/invoices/views/invoices.html',
        resolve: resolveUrl('/invoices/app/js/compiled/invoices_app.js')
    })
    .state('users', {
        url: "/users",
        controller: 'usersCtrl',
        templateUrl: '/users/views/users.html',
        resolve: resolveUrl('/users/app/js/compiled/users_app.js')
    });
}

angular
    .module('homer')
    .config(configState)
    .run(function($rootScope, $state) {
        $rootScope.$state = $state;
    });

这可能吗?

假设.json文件遵循以下结构:

{
    "invoices": {
        "name": "invoices",
        "url": "/invoices",
        "controller": "invoicesCtrl",
        "templateUrl": "./invoices.html"
    },
    "reports": {
        "name": "reports",
        "url": "/reports",
        "controller": "reportsCtrl",
        "templateUrl": "./reports.html"
    },
}
在.config方法参数函数内的
for in
循环中遍历它们

for(var prop in states){
    $stateProvider.state(prop, states[prop])
}
PS:我认为你不能在json对象中嵌入像
resolveUrl
这样的js函数