У меня есть приложение AngularJS, построенное с версией 1.2.5. Я пытаюсь динамически добавлять маршруты. В настоящее время у меня есть следующие:Динамически добавлять маршруты в AngularJS
var sitemap = [];
angular.module('app', ['ngRoute', 'ngAnimate'])
.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
angular.forEach(sitemap, function (value, key) {
$routeProvider.when(value.route, { templateUrl: value.html, controller: viewCtrl });
});
$routeProvider.otherwise({ templateUrl: '/views/default.html', controller: viewCtrl });
})
.service('navigationService', function() {
this.loadItems = function() {
console.log('loading items...');
sitemap.push({
name: 'dashboards', children: [
{ name: 'dashboard 1', route: '/dashboards/dashboard1', html: '' }
]
});
sitemap.push({
name: 'views', children: [
{ name: 'historical', route: '/views/historical', html: '/views/historical.html' },
{ name: 'present', route: '/views/present', html: '/views/present.html' },
{ name: 'future', route: '/views/future', html: '/views/future.html' }
]});
};
})
;
Хотя моя карта сайта жестко закодировано, я хотел бы, чтобы в конечном итоге вытащить это из веб-службы. Вот почему я хочу полагаться на функцию в сервисе. Однако я не могу понять, как динамически строить маршруты, как только я их получу. Может кто-нибудь, пожалуйста, дайте некоторое представление?
Спасибо!
Будет ли это поможет вам: http://stackoverflow.com/questions/13681116/angularjs-dynamic-routing?rq=1 – link64
К сожалению, нет. Причина в том, что html и route могут не иметь одинаковое значение. Например, у меня могла бы быть запись, которая выглядит как {name: 'other', route: '/ where/rainbow', html: '/ root/site'} – user3284007