2015-04-01 14 views
11

ui-router Stato:ui-router con ControllerAs vincolanti

$stateProvider 
    .state('dashboard', { 
     url: '/dashboard', 
     templateUrl: 'app/dashboard/dashboard.html', 
     controller: 'DashboardController as vm' 
    }); 

In DashboardController ho:

var vm = this; 
vm.title = 'Dashboard'; 

E nel modello dashboard.html:

{{vm.title}} 

Perché il risultato sta mostrando "{{vm.title}}" invece di associare il suo valore nel controller?

+0

se si desidera associare in vista si usa $ scope –

+0

È necessario aggiungere vm all'oscilloscopio per renderlo disponibile nella visualizzazione. $ scope.vm = {title: 'Dashboard'}; – thsorens

+0

$ scope morirà nelle nuove versioni di Angular :( – Oswaldo

risposta

21

C'è un controller come impostazione quando si configura lo stato.

$stateProvider 
    .state('dashboard', { 
     url: '/dashboard', 
     templateUrl: 'app/dashboard/dashboard.html', 
     controller: 'DashboardController', 
     controllerAs: 'vm' 
    }); 

https://github.com/angular-ui/ui-router/wiki

+1

Ho provato il tuo codice, ma non ha funzionato, indovina controllerAs è lo stesso controllore: 'DashboardController as ...' – Oswaldo

+1

Sì, sembra che potresti usare entrambi i metodi in modo che sia qualcos'altro. Puoi pubblicare il modello completo invece della sola linea di rilegatura? –

+0

bind line è il mio codice di modello completo per ora, usando per il test – Oswaldo

1

Nella tua controller function, si dovrà return this; al termine della funzione.

var vm = this; 
vm.title = 'Dashboard'; 
// 
return vm; 

Se lavoriamo con $ portata invece di vm = this;:

$scope.title = 'Dashboard'; 
// 
return $scope; 

Good Luck.

Problemi correlati