Динамическое изменение маршрутов в angular и добавление контента

Я настроил специальный маршрут для angular, который является единым маршрутом для многих статических страниц (подумайте о политике конфиденциальности, клиентском html, и я хотел бы, чтобы мои клиенты могли загружать папку как html-страницу и динамически загружать ее с помощью маршрутизация.

Когда вы вводите что-то в адресной строке, я говорю angular пойти посмотреть в каталоге и найти файл .html с $routeParams.name и загрузить его.

Это прекрасно работает, но я заменяю данные на пустую страницу. blank.html

App.js

.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);

$routeProvider.when('/test', {
  controller : 'AppRepeatCtrl',
  templateUrl : './templates/test_tpl.html'
}).when('/:name', { 
  controller: 'DynamicRoutes',
  templateUrl: 'partials/blank.html'
}).otherwise({
  redirectTo: '/'
});

})

Контроллеры.js

function DynamicRoutes ($scope, $http, $location, $route, $routeParams, $compile, appLoading) {
  if ($routeParams.name == '' ) {
     $route.current.templateUrl = 'partials/' + "home.html";
  }  else {
     $route.current.templateUrl = 'partials/' + $routeParams.name + ".html";
  }

  $http.get($route.current.templateUrl).then(function (msg) {
    if (msg.data.contains('html')) {
        $http.get('partials/error.html').then(function (msg) {
            $('#ng-view').html($compile(msg.data)($scope));
        });
    } else {
        appLoading.ready();
        $('#ng-view').html($compile(msg.data)($scope));

    }
});
};

Мой вопрос в том, есть ли способ загрузить страницу из частичного без загрузки пустого шаблона, а затем заменить html статической страницей. Поскольку я занимаюсь анимацией, из-за замены анимация прерывается. Мне действительно нужно загрузить страницу, не заменяя страницу шаблона Blank.html или заменяя Blank.html ДО того, как представления запустят ng-animate

$('#ng-view').html($compile(msg.data)($scope)); я думаю, что это заставляет страницу заменять html без ввода ng-animate. просмотр отделки.

потому что если вы измените его на $('#ng-view').append($compile(msg.data)($scope));

вы можете видеть 2 x и 1 имеет анимацию, но как только происходит добавление, анимация останавливается.


person Zuriel    schedule 25.09.2013    source источник


Ответы (1)


Во-первых, не загружайте шаблон в контроллер, это не угловой способ сделать это.

Вам не нужно загружать пустой.html только потому, что вы должны предоставить шаблон, templateUrl может быть функцией, в которой вы можете определить, какой шаблон загрузить.

$routeProvider.when('/:name', {
    controller : 'DynamicRoutes',
    templateUrl : function (params) {
        console.log(params); // check the console to see what are passed in here

         //return a valid Url to the template, and angular will load it for you
    }
});
person bingjie2680    schedule 25.09.2013
comment
Я знаю, что немного поздно комментировать, но можете ли вы объяснить, когда вызывается функция (я пытаюсь понять, когда я могу передать ей параметры)? - person JimmyBoy; 04.07.2016