Angulaire de l'INTERFACE utilisateur du routeur d'accès de l'état params parent

J'ai Angulaire de l'App à l'aide de la grande ui-router.

Ma configuration ressemble:

.config( function ($stateProvider, $urlRouterProvider) {

    $stateProvider

    //PROJECT DETAIL
    .state('project', {
        url: '/project/:projectId/',
        resolve: {
            /* some base api calls */
        },
        views: {
            'task-list': {
                templateUrl: 'partials/task_list.tmpl.html',
                controller: 'TaskListCtrl',
                resolve: {
                    tasks: function ($stateParams, ConcernService) {
                        return ConcernService.get('project-tasks/', $stateParams.projectId);
                    },
                }
            },
            'concern-instance': {
                /* some resolved variables */
            }
        }
    })
    .state('project.task', {
        url: 'task/:taskId/',
        views: {
            'concern-instance@': {
                /* some different resolved variables */
            },
        }
    })

Tout cela fonctionne comme dans du beurre. Toutefois, dans mon task_list modèle lors de l'état project.task, je veux être en mesure d'accéder à la taskId param donc je peut mettre en évidence active nav liens, même lorsque l'url est #/project/123/task/456/ la taskId est vide. Je comprends que c'est parce que les modèles n'ont accès qu'à params déclarées à cet état. Donc, si je veux obtenir le taskId dans le project.task état, comment dois je faire? Ai-je besoin de re-déclarer le task-list dans project.task?

  • C'est un problème ennuyeux. Vous pouvez supprimer l'url de la mère-patrie, et de déclarer des url complètes pour l'enfant, les états, si vous n'avez pas besoin de l'état param dans le contrôleur de parent/modèle. Si vous le faites, alors je suppose que vous pourriez mettre juste l'état param dans le champ d'application dans une variable pour être accessible par les enfants.
  • Nous sommes en cours d'exécution dans la même situation que vous décrivez. Vous le savez probablement déjà, mais vous pouvez en fait à l'ensemble de vos paramètres via $state.params. Mais, si vous êtes comme moi, elle ne va pas bien avec vous pour obtenir vos paramètres dans les différentes façons tout au long de vos contrôleurs. La chose la plus proche que j'ai trouvé jusqu'à présent dans le documentation décrit l'opposé question d'un parent de l'état param pas disponible à l'état d'enfant. Avez-vous jamais comprendre cela (via $stateParams)?
  • Avez-vous jamais pensé que cela? J'ai aussi eu le même problème.
InformationsquelleAutor Darwin Tech | 2014-04-08