2015-04-09 2 views
0

Я использую angularJS с ui-router для управления своими маршрутами. Я использую тот же контроллер (который имеет функции для управления своим пользователям, как добавлять, редактировать и удалять) для некоторых различных состояний или маршрутов, как следующее:AngularJS ui-router поведение

    .state('manage', { 
         abstract: true, 
         url: '/manage', 
         views: { 
          '': { 
           templateUrl: 'views/layout.html' 
          } 
         } 
        }) 
        .state('state1', { 
         url: '/list-users', 
         controller: 'ManageCtrl', 
         templateUrl: 'views/pages/manage/list-users.html', 
        }) 
        .state('state2', { 
         url: '/add-user', 
         controller: 'ManageCtrl', 
         templateUrl: 'views/pages/manage/add-user.html', 
        }) 

Во-первых, это правильно? Какова наилучшая практика сделать что-то вроде моего дела?

Во-вторых, Каково поведение ui-router, изменилось ли оно каждый раз при изменении состояния, он повторно инициализирует контроллер? потому что я использую $caheFactory в мой контроллер, как:

$scope.cache = $cacheFactory('manageUsers'); 

Когда состояние изменилось, ошибка CacheId 'manageUsers' is already taken! произошло.

+0

$ cacheFactory следует использовать как услугу. Вы пытаетесь настроить его внутри своего контроллера? – tpie

+0

Я использую его как услугу и внедряю его в свой контроллер 'app.controller ('ManageCtrl', ['$ cacheFactory', function ($ cacheFactory) {// некоторая логика здесь}]);' –

ответ

0

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

.state("organizationSetup.system", { 
    url: "/system", 
    views: { 
     "contents": { 
     templateUrl: "system.html", 
     controller: "systemCtrl" 
     } 
    }, 
    permission: "readRole", 
    context: { 
     product: "Admin" 
    }, 
    title: "System" 
    }).state("organizationSetup.system.new", { 
    url: "/new", 
    permission: "system", 
    context: { 
     product: "Admin" 
    }, 
    views: { 
     "childContents": { 
     templateUrl: "system.new.html" 
     } 
    }, 
    title: "System New" 
    }).state("organizationSetup.system.view", { 
    url: "/view", 
    permission: "system", 
    context: { 
     product: "Admin" 
    }, 
    views: { 
     "childContents": { 
     templateUrl: "system.view.html" 
     } 
    } 

в этом случае контроллер и услуг не будет инициализирован снова. в вашем случае ваш контроллер, службы будут инициализированы для каждого состояния.

Смежные вопросы