2013-04-04 8 views
0

У меня есть требование, которое говорит, что когда запрашиваются определенные URL-адреса, мне нужно изменить представление и отобразить некоторое единообразное представление с соответствующими данными. Это было бы легко, если бы я мог вручную добавлять маршруты для соответствия этим URL-адресам, а затем использовать те же templateUrl и controller, чтобы отобразить представление.Динамическое изменение содержимого ngView

В моем случае это немного сложнее. Эти маршруты генерируются динамически. Вкратце, в проекте, над которым я работаю, мне нужно дать пользователям [разработчикам на самом деле] возможность определить карту сайта и на основе определенных критериев, которые пользователь выбирает, дочерние элементы определенного узла (который имеет динамически сгенерированный URL-адрес) будет либо отображаться в меню, либо как плитка в общем представлении.

У меня есть часть меню, работающая отлично. Мне все еще нужно выяснить способ подачи ngView с соответствующим шаблоном и данными для отображения фрагментов. Возможно ли это?

UPDATE:

Я думаю, что я мог бы использовать метод otherwise на $routeProvider службы добиться чего-то в этом роде. В документации говорится, что этот метод запускается, когда для определенного URL не определены маршруты.

Буду признателен, если кто-то подтвердит, что это возможное решение, и если что-то лучше, пожалуйста, разделите. Заранее спасибо.

+0

нужно быть более конкретным, чем просто сказать everyhting является 'dynamic'. Создайте демонстрацию в плункере, которая дает обзор проблемы. – charlietfl

+0

Вы пытаетесь отобразить несколько экземпляров одного и того же представления/контроллера на странице? – Sylvain

+0

Доступен URL-адрес, который динамически доступен в файле углового скрипта? –

ответ

1

У меня тоже была эта проблема. Пожалуйста, посмотрите, если это поможет.

HTML:

<a href="" class="btn btn-success" ng-click="changeView()">Switch View</a> 
<div ng-include="viewTemplate"></div> 

Контроллер:

$scope.changeView = function() { 
      if ($scope.isParcelYearGrid) { 
       $scope.viewTemplate = '../app/parcelMassEntry/parcelMassEntryGrid.html'; 
      } 
      else { 
       $scope.viewTemplate = '../app/parcelMassEntry/parcelMassEntry.html'; 
      } 
     }; 
Смежные вопросы