2013-08-13 3 views
2

Я использую угловые для динамического создания другого углового приложения. Мне было интересно, есть ли способ динамически вводить маршруты. Что-то вродеИнъекционные маршруты dynamicall в angularjs

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

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

}); 

Я знаю, что этот код глупый, но я надеюсь, что он передает то, что я пытаюсь сделать. Когда пользователь взаимодействует с приложением, он/она будет создавать новые маршруты ... это возможно?

+0

Это должно ответить на ваш вопрос: http://stackoverflow.com/a/13173667/17815 –

+0

Ahhh большое вам спасибо !!! Buu Nguyen – climboid

ответ

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. Думаю, это облегчает обслуживание. Возможно, вы можете попробовать положить его в крышку.

В любом случае имейте в виду, что вы должны сделать это в провайдере, чтобы сделать приложение надежным. «определить перед использованием».

+0

Блестящая благодарность Эдуарду! – climboid

Смежные вопросы