angular 子元素访问父元素的$scope

若html以下:html

<div ng-controller="ParentCtrl">
    <div ng-controller="ChildCtrl">
    </div></div>

你能够如此访问父元素:
angularjs

function ParentCtrl($scope) {
    $scope.cities = ["NY", "Amsterdam", "Barcelona"];}function ChildCtrl($scope) {
    $scope.parentcities = $scope.$parent.cities;}

还有一个更好的方法:由于子元素能够继承父元素的内容,所以你没必要调用$parent,上面的实例能够如此重写:ajax

function ParentCtrl($scope) {
    $scope.cities = ["NY","Amsterdam","Barcelona"];}function ChildCtrl($scope) {
    $scope.parentCities = $scope.cities;}


其余方式:
json

HTMLapi

<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>


JSapp

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;}

若是使用别名,你也能够经过下面这种方式访问父元素内容:this

function ChildCtrl($scope) {
    var vm = this;
    vm.parentCities = $scope.pc.cities; // note pc is a reference to the "ParentCtrl as pc"}


如你所见,有不一样方式访问父元素
google

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>


可参考:http://stackoverflow.com/questions/21453697/angularjs-access-parent-scope-from-child-controllercode

相关文章
相关标签/搜索