2017-09-27 2 views
0

Je souhaite exécuter une méthode qui renvoie une chaîne dans l'objet data. Par exemple si le résultat retourné par la méthode est: "Richard Stallman" Je veux ça sur mon contrôleur avec: this. $state.current.data.title égal à "Richard Stallman" comme si je l'ai fait simplement:Angular 1/ui-router - exécute la fonction dans l'objet de données

data: { 
    title: "Richard Stallman" 
    } 

Mon état:

.state({ 
    name: 'agent.production.myiad.project.detail.edit.headers.overlay.comment', 
    url: '/comment', 
    data: { 
    title: (project, IadProjectUtilService) => { 
      IadProjectUtilService.getProjectName(project) 
     } 
    }, 
    component: 'iadAgentMyIadComment' 
}) 

Répondre

1

Ceci est généralement résolu par un bloc resolve.

.state({ 
    name: 'agent.production.myiad.project.detail.edit.headers.overlay.comment', 
    url: '/comment', 
    resolve: { 
    title: (project, IadProjectUtilService) => { 
      IadProjectUtilService.getProjectName(project) 
     } 
    }, 
    component: 'iadAgentMyIadComment' 
}); 

...

uirouter attendra la promesse retournée par IadProjectUtilService.getProjectName(project) et lier ensuite à title de le composant de liaison.

.component('iadAgentMyIadComment', { 
    bindings: { title: '<' }, 
    controller: IadAgentMyIadCommentController, 
}); 

Voici un guide sur le routage des composants: https://ui-router.github.io/guide/ng1/route-to-component#resolve-bindings