2013-05-19 10 views
7

Ho il seguente:Può un ambito di controllo ereditare da un controller di genitore quando si utilizza ui-router

var admin = { 

    name: 'admin', 
    url: '/admin', 
    views: { 
     'nav-sub': { 
      templateUrl: '/Content/app/admin/partials/nav-sub.html', 
      controller: function ($scope) { $scope.message = "hello"; } 
     } 
    }, 
    controller: ['$scope', function ($scope) { 
     $scope.message = "hello"; 
    }] 
} 

var subject = { 
    name: 'subject', 
    parent: admin, 
    url: '/subject', 
    views: { 
     '[email protected]': { 
      templateUrl: '/Content/app/admin/partials/grid-subject.html', 
      controller: 'AdminGridSubjectController', 
     } 
    } 
}; 

vorrei che l'AdminGridSubjectController sapere qual è il valore di $ scope.message è ma sembra non sapere niente a riguardo. C'è qualcosa che sto sbagliando?

stApp.controller('AdminGridSubjectController', ['$scope', function ($scope) { 
    var a = $scope.message; 
}]); 

risposta

17

Al fine per accedere allo scope di un controller padre in UI angolare Utilizzare il router:

$scope.$parent 

Quindi l'ambito genitore è quindi liberamente disponibile.

+1

Questo non funziona per le viste. La vista secondaria non può accedere alle proprietà dell'ambito non root del genitore che contiene la vista. Semplicemente non esistono e non sono esposti correttamente. – egervari

+0

Ho cercato ore! grazie un mucchio – tinybyte

0

Il tuo problema potrebbe essere che il nome dovrebbe riflettere il genitore in esso:

var subject = { 
    name: 'admin.subject', 
    parent: admin, 
    url: '/subject', 
    ... 

Ecco un'illustrazione completa di come ereditare $ portata con ui-router: plunker ex

+0

Schwarts - Grazie Ben. Ho provato questo, ma ho ancora il problema. Mi chiedo se questo è qualcosa a che fare con il fatto che sto usando le viste. –

+0

@Anne È il problema della vista. – luthur

+0

Non dovrebbe averlo bisogno se dichiari 'parent', giusto? Inoltre, puoi usare una stringa invece di un riferimento a un oggetto? Mi piace, '{..., genitore: 'admin', ...}'? Grazie! – Cody

Problemi correlati