以角度动态加载路径的最简单方法是什么?

时间:2015-07-01 11:16:34

标签: angularjs

我正在构建一个角度应用程序,我想要完成的是有一个对象数组,我将保留每个模块的基本信息(网址,控制器名称),所以我将有一个服务对于初始化,它将在每个路由上使用不同的url调用,以使用ajax调用获取服务器数据,因此我在每个控制器加载时都有相应的数据。

回到一个漂亮的错误:

modules = [{
  name: Scan,
  url: packing/scan,
  controllerName : packer
}];

var Application = angular.module('ReporterApplication', ['ngRoute', 'ngSanitize', 'ui.select']);

/**
 * Handles the initialization by fetching server data on module run
 */

Application.service('Initialize', ['$http', function($http)
{

    this.serverData = function(route) 
    {
        return $http.get(route + '.action')
            .then(function(response)
            {                         
                return response.data;
            });

    };

}])


Application.config(['$routeProvider', '$interpolateProvider',

    function($routeProvider, $interpolateProvider) {

        $interpolateProvider.startSymbol('<%');
        $interpolateProvider.endSymbol('%>');



        for (var i=0; i < 1; i++) {
            var index = i; // for some weird reason i is 1 by the time initData is run
            $routeProvider.when('/' + modules[i].url + '.html', {
                templateUrl: modules[i].url + '.html',
                controller: modules[i].name + 'Controller' + ' as ' + modules[i].controllerName,
                resolve: {
                  initData : ['Initialize', function(Initialize) {
                    return Initialize.serverData('/' + modules[index].url)
                  }] 
                }

            })
        };   etc more code 

scan.js

Application.controller('ScanController', ['$scope', '$http', 'initData', function($scope, $http, initData) {

    var packer = this;

    packer.initData = initData;
    packer.packedToday = initData.ordersPackedToday; etc more code

这就抛弃了我

错误:[$ injector:unpr]未知提供者:initDataProvider&lt; - initData&lt; - ScanController

更新:解决了那个,但现在似乎控制器没有加载数据

更新:解决了这个问题。一切似乎都有效,而且我是最好的:D

0 个答案:

没有答案