在angularjs动态地注入路线

问题描述 投票:2回答:1

我使用的角度来动态创建另一个角度应用。我在想,如果有动态地注入路线的方式。就像是

angular.module('app').controller('CreateCtrl', function ($scope,$routeProvider) {
  var count = 0;

  $scope.addPage = function(){  
    $routeProvider.when('/'+count, {
       templateUrl: 'views/created.html',
       controller: 'CreatedCtrl'
     });
    count++;
  };

});

我知道这个代码是愚蠢的,但我希望它传送什么,我试图做的。当用户intercts与应用程序,他/她将创造新的路线......这可能吗?

angularjs angularjs-routing
1个回答
0
投票

有两种方法:

选项1

修改的路由直接对象,如https://stackoverflow.com/a/13173667/17815建议

$route.routes['/dynamic'] = {templateUrl: 'dynamic.tpl.html'};

请注意:您需要同时添加“/ NEWURL”和“/ NEWURL /”(带斜线)。见角的代码:

this.when = function(path, route) {
routes[path] = extend({reloadOnSearch: true}, route);

// create redirection for trailing slashes
if (path) {
  var redirectPath = (path[path.length-1] == '/')
      ? path.substr(0, path.length-1)
      : path +'/';

  routes[redirectPath] = {redirectTo: path};
}

return this;
};

选项2

你可以保持一个参考$routeProvider

var $routeProviderReference;
var app = angular.module('myApp', ['myApp.controllers']);

app.config(['$routeProvider', function($routeProvider) {
    $routeProviderReference = $routeProvider;
}]);

http://blog.brunoscopelliti.com/how-to-defer-route-definition-in-an-angularjs-web-app

这是污染全局命名空间,但你仍然使用的接口变异的routes对象。我想这使得它更易于维护。也许你可以尝试把它在一个封闭。

在任何情况下,请记住,你是希望做一个供应商,使应用程序的鲁棒性。 “使用前定义”。

© www.soinside.com 2019 - 2024. All rights reserved.