AngularJS-访问子范围

如果我有以下控制器:


function parent($scope, service) {

    $scope.a = 'foo';


    $scope.save = function() {

        service.save({

            a:  $scope.a,

            b:  $scope.b

        });

    }

}


function child($scope) {

    $scope.b = 'bar';

}

parent读b出的正确方法是child什么?如果有必要定义b中parent,也不会使它语义上不正确假设b是描述相关的东西的属性child,而不是parent?


更新:对此进行进一步的思考,如果有一个以上的孩子b,将会parent在b检索上产生冲突。我的问题是,什么是访问的正确方法是b从parent?


吃鸡游戏
浏览 571回答 4
4回答

FFIVE

尽管jm-的答案是处理这种情况的最佳方法,但为了将来参考,可以使用范围的$$ childHead,$ childTail,$ nextSibling和$$ prevSibling成员来访问子范围。这些没有记录在案,因此它们可能会在不通知的情况下进行更改,但是如果您确实需要遍历作用域,它们就在那。// get $$childHead first and then iterate that scope's $$nextSiblingsfor(var cs = scope.$$childHead; cs; cs = cs.$$nextSibling) {    // cs is child scope}

慕沐林林

您可以尝试以下方法:$scope.child = {} //declare it in parent controller (scope)然后在子控制器(作用域)中添加:var parentScope = $scope.$parent;parentScope.child = $scope;现在,父母可以访问孩子的范围了。

红糖糍粑

一种可能的解决方法是使用init函数将子控制器注入到父控制器中。可能的实现:<div ng-controller="ParentController as parentCtrl">&nbsp; &nbsp;...&nbsp; &nbsp; <div ng-controller="ChildController as childCtrl"&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ng-init="ChildCtrl.init()">&nbsp; &nbsp; &nbsp; &nbsp;...&nbsp; &nbsp; </div></div>ChildController您在哪里:app.controller('ChildController',&nbsp; &nbsp; ['$scope', '$rootScope', function ($scope, $rootScope) {&nbsp; &nbsp; this.init = function() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$scope.parentCtrl.childCtrl = $scope.childCtrl;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$scope.childCtrl.test = 'aaaa';&nbsp; &nbsp; };}])因此,现在ParentController您可以使用:app.controller('ParentController',&nbsp; &nbsp; ['$scope', '$rootScope', 'service', function ($scope, $rootScope, service) {&nbsp; &nbsp; this.save = function() {&nbsp; &nbsp; &nbsp; &nbsp; service.save({&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a:&nbsp; $scope.parentCtrl.ChildCtrl.test&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp;};}])重要提示:要正常工作,您必须使用指令ng-controller并使用as与我在html eg中相同的方式重命名每个控制器。提示:在此过程中,请使用chrome插件ng-inspector。它会帮助您理解树。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

AngularJS