2016-07-28 6 views
1

Я только начал использовать Angular и в настоящее время использую 1.4.2. Я хотел бы знать, как иметь только три параметра для URL, /:type - создавать, обновлять и просматривать.Параметры углового параметра JS с ограниченными возможностями

Все они используют один и тот же контроллер, так что я не хочу иметь отдельные Whens, такие как

.when('/create ... , .when('/update ... , .when('/view ... . 

Я не хочу никаких других вариантов быть переданы рядом эти. Было бы здорово, если бы я мог помочь! Спасибо :)

+0

Создание 3 отдельных правил. – dfsq

+0

Вы имеете в виду три случая «.when»? но это то, что я хотел избежать, потому что все они будут использовать один и тот же контроллер. Внутри этого контроллера флаги будут установлены соответствующим образом. –

+1

Вы можете использовать один и тот же контроллер или разные контроллеры. Не уверен, что я понимаю вашу проблему. – dfsq

ответ

2

Вы можете просто получить параметр из службы $ routeParams на своем контроллере и выполнить любую логику, которую вы хотите с ней сделать. см https://docs.angularjs.org/api/ngRoute/service/ $ routeParams

маршрут конфигурации

$routeProvider 
    .when("/yourroute/:type", { 
     template: "default" 
     templateUrl: "template.html", 
     controller: "Controller" 
    }); 

функция контроллера

function Controller($routeParams) { 
    switch($routeParams.type) { 
     case "create": 
      ... 
     case "update": 
      ... 
     case "view": 
      ... 
     default: 
      ... 
    } 
} 
+0

Спасибо! :) Я думаю, что это то, что я искал :) –

0

, но вы хотите 3 diffrrents url? Вы должны использовать ui-router и stateHelperProvider для использования дочерней инструкции il, которую вы не хотите объявлять несколькими, когда. Вы должны быть в состоянии сделать что-то вроде

stateHelperProvider.state({ 
      name: 'root', 
      template: '<ui-view/>', 
      abstract: true, 
      children: [ 
        { 
         name: 'create', 
         url: '/create', 
         templateUrl: 'mypath.html', 
         controller: 'myCtrl', 
         data: { 
          type: 'create' 
         } 
        }, 
       { 
        name: 'view', 
        url: '/view', 
        templateUrl: 'mypath.html', 
        controller: 'myCtrl', 
        data: { 
         type: 'view' 
        } 
       }, 
       { 
        name: 'update', 
        url: '/update', 
        templateUrl: 'mypath.html', 
        controller: 'myCtrl', 
        data: { 
         type: 'update' 
       } 
       }, 
      ] 
      }); 

whit каждый раз данные с вашими данными. Но я не понимаю, что вы не объявляете 3 «когда»

+0

Да, в зависимости от типа, который я передаю, будут назначены флаги. Так, например, если тип является представлением, тогда я отключу поля. –

+0

Спасибо! :) Но похоже, что это полезно, когда у вас есть разные файлы и контроллеры html для каждого ребенка. –

+0

Я так думаю, и решение @ doge1ord очень хорошее :) – DMCISSOKHO