Jika HTML Anda seperti di bawah ini Anda dapat melakukan sesuatu seperti ini:
<div ng-controller="ParentCtrl">
<div ng-controller="ChildCtrl">
</div>
</div>
Kemudian Anda dapat mengakses lingkup induk sebagai berikut
function ParentCtrl($scope) {
$scope.cities = ["NY", "Amsterdam", "Barcelona"];
}
function ChildCtrl($scope) {
$scope.parentcities = $scope.$parent.cities;
}
Jika Anda ingin mengakses controller induk dari tampilan Anda, Anda harus melakukan sesuatu seperti ini:
<div ng-controller="xyzController as vm">
{{$parent.property}}
</div>
Lihat jsFiddle: http://jsfiddle.net/2r728/
Memperbarui
Sebenarnya karena Anda mendefinisikan cities
dalam kontroler induk, kontroler anak Anda akan mewarisi semua variabel lingkup. Jadi secara teori Anda tidak perlu menelepon $parent
. Contoh di atas juga dapat ditulis sebagai berikut:
function ParentCtrl($scope) {
$scope.cities = ["NY","Amsterdam","Barcelona"];
}
function ChildCtrl($scope) {
$scope.parentCities = $scope.cities;
}
Dokumen AngularJS menggunakan pendekatan ini, di sini Anda dapat membaca lebih lanjut tentang $scope
.
Pembaruan lain
Saya pikir ini adalah jawaban yang lebih baik untuk poster aslinya.
HTML
<div ng-app ng-controller="ParentCtrl as pc">
<div ng-controller="ChildCtrl as cc">
<pre>{{cc.parentCities | json}}</pre>
<pre>{{pc.cities | json}}</pre>
</div>
</div>
JS
function ParentCtrl() {
var vm = this;
vm.cities = ["NY", "Amsterdam", "Barcelona"];
}
function ChildCtrl() {
var vm = this;
ParentCtrl.apply(vm, arguments); // Inherit parent control
vm.parentCities = vm.cities;
}
Jika Anda menggunakan controller as
metode ini, Anda juga dapat mengakses lingkup induk sebagai berikut
function ChildCtrl($scope) {
var vm = this;
vm.parentCities = $scope.pc.cities; // note pc is a reference to the "ParentCtrl as pc"
}
Seperti yang Anda lihat ada banyak cara berbeda dalam mengakses $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;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.20/angular.min.js"></script>
<div ng-app ng-controller="ParentCtrl as pc">
<div ng-controller="ChildCtrl as cc">
<pre>{{cc.parentCities | json}}</pre>
<pre>{{cc.parentCitiesByScope | json }}</pre>
<pre>{{pc.cities | json}}</pre>
</div>
</div>