Si votre HTML est comme ci-dessous, vous pouvez faire quelque chose comme ceci :
Ensuite, vous pouvez accéder à la portée parente comme suit :
function ParentCtrl($scope) {
$scope.cities = ["NY", "Amsterdam", "Barcelona"];
}
function ChildCtrl($scope) {
$scope.parentcities = $scope.$parent.cities;
}
Si vous voulez accéder à un contrôleur parent depuis votre vue, vous devez faire quelque chose comme ceci :
{{$parent.property}}
Voir jsFiddle : http://jsfiddle.net/2r728/
Mise à jour
En fait, puisque vous avez défini cities
dans le contrôleur parent, votre contrôleur enfant héritera de toutes les variables de portée. Théoriquement, vous n'avez donc pas besoin d'appeler $parent
. L'exemple ci-dessus peut également être écrit comme suit :
function ParentCtrl($scope) {
$scope.cities = ["NY","Amsterdam","Barcelona"];
}
function ChildCtrl($scope) {
$scope.parentCities = $scope.cities;
}
Les documents AngularJS utilisent cette approche, ici vous pouvez en lire davantage sur le $scope
.
Autre mise à jour
Je pense que c'est une meilleure réponse pour l'auteur initial.
HTML
{{cc.parentCities | json}}
{{pc.cities | json}}
JS
function ParentCtrl() {
var vm = this;
vm.cities = ["NY", "Amsterdam", "Barcelona"];
}
function ChildCtrl() {
var vm = this;
ParentCtrl.apply(vm, arguments); // Hériter du contrôle parent
vm.parentCities = vm.cities;
}
Si vous utilisez la méthode controller as
, vous pouvez également accéder à la portée parente comme suit :
function ChildCtrl($scope) {
var vm = this;
vm.parentCities = $scope.pc.cities; // notez que pc est une référence au "ParentCtrl as pc"
}
Comme vous pouvez le constater, il existe de nombreuses façons d'accéder aux $scopes
.
function ParentCtrl() {
var vm = this;
vm.cities = ["NY", "Amsterdam", "Barcelona"];
}
function ChildCtrl($scope) {
var vm = this;
ParentCtrl.apply(vm, arguments);
vm.parentCitiesByScope = $scope.pc.cities;
vm.parentCities = vm.cities;
}
{{cc.parentCities | json}}
{{cc.parentCitiesByScope | json }}
{{pc.cities | json}}