ng-route, чтобы прочитать ссылку и найти конкретный контроллер с тем же именем

0

Я использую ng-click и ng-view для маршрутизации моего div id= "listings" чтобы показывать различные типы мобильных объявлений, таких как iphone 4, iphone 5, nexus 4, nexus 5, nexus 6, lg g3 и т.д.

Вот мой Plunkr.

<div ng-repeat = 'breakdown in selected.breakdowns' ng-href = '#{{breakdown}}'>

  {{breakdown}}

</div>

На моем маршруте:

.when('/', {
    controller  : 'home-ctrl',
})
.when('/nexus_4, {
    controller : 'nexus_4-ctrl',
    templateUrl : 'listings.html',
})

и так далее. Но это кажется утомительным. Вместо того, чтобы делать это для каждого отдельно, есть ли способ для приложения читать URL-адрес, например mywebsite.com/nexus_5, а затем искать файл контроллера с именем nexus_5-ctrl?

Спасибо!

  • 0
    Нужно ли использовать разные контроллеры для каждого телефона? Я думаю, что вы можете использовать routeParam в вашем контроллере для загрузки значений соответственно. [ docs.angularjs.org/api/ngRoute/service/$routeParams
  • 0
    @RaghuVenmarathoor Это всего лишь пример, но в основном моя цель состоит в том, чтобы на странице списков были показаны все выбранные телефоны для продажи в моем районе. Я не знаю много об Angular, но вы думаете, я могу использовать для этого routeParam? Будут звонить из Map API и некоторые другие вещи из Firebase.
Теги:

1 ответ

1

По моему мнению, это не способ привязать динамический контроллер к любому маршруту. Вы должны создать маршрут для каждого возможного состояния. да, вы можете загрузить файл контроллеров динамически или сказать по запросу, используя Lazy load. Я использовал то же самое в своих проектах и прекрасно работал со мной.

Вот фрагмент моего кода, как я это делаю.

 resolve : {
        loadSummerNote:function($ocLazyLoad){
             return $ocLazyLoad.load({
                   name:"summernote",   
                   files: ['/bower_components/summernote/dist/summernote.css','/bower_components/angular-summernote/dist/angular-summernote.min.js','/bower_components/summernote/dist/summernote.min.js']
                })
        },
      loadUploadFile:function($ocLazyLoad,loadSummerNote){
           return $ocLazyLoad.load({
                  name: 'ngFileUpload',
                  files: ['/bower_components/ng-file-upload/ng-file-upload-shim.min.js','/bower_components/ng-file-upload/ng-file-upload.min.js']
              })
      }, 
      currentDomain : function (Domain, $stateParams,loadUploadFile,User){
        return Domain.getDomain();
      }
     },
     controller : "domain"

Загрузите все необходимые файлы в блок разрешений, чтобы вся загрузка была загружена перед загрузкой контроллера.

  1. Еще одно решение для этого - использовать угловой ui- ROUTER. ui- поддерживает множественный просмотр в одном состоянии. Поэтому нет необходимости создавать состояние для каждого возможного случая. просто создайте представление для темы.
  • 0
    В ui-router есть controllerProvider, который поможет ввести динамический контроллер в ваше состояние. Похоже, хорошая возможность иметь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню