亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AngularJS-訪問子范圍

AngularJS-訪問子范圍

吃雞游戲 2019-10-06 14:58:56
如果我有以下控制器: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?
查看完整描述

4 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

盡管jm-的答案是處理這種情況的最佳方法,但為了將來參考,可以使用范圍的$$ childHead,$ childTail,$ nextSibling和$$ prevSibling成員來訪問子范圍。這些沒有記錄在案,因此它們可能會在不通知的情況下進行更改,但是如果您確實需要遍歷作用域,它們就在那。


// get $$childHead first and then iterate that scope's $$nextSiblings

for(var cs = scope.$$childHead; cs; cs = cs.$$nextSibling) {

    // cs is child scope

}


查看完整回答
反對 回復 2019-10-06
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

您可以嘗試以下方法:


$scope.child = {} //declare it in parent controller (scope)

然后在子控制器(作用域)中添加:


var parentScope = $scope.$parent;

parentScope.child = $scope;

現在,父母可以訪問孩子的范圍了。


查看完整回答
反對 回復 2019-10-06
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

一種可能的解決方法是使用init函數將子控制器注入到父控制器中。


可能的實現:


<div ng-controller="ParentController as parentCtrl">

   ...


    <div ng-controller="ChildController as childCtrl" 

         ng-init="ChildCtrl.init()">

       ...

    </div>

</div>

ChildController您在哪里:


app.controller('ChildController',

    ['$scope', '$rootScope', function ($scope, $rootScope) {

    this.init = function() {

         $scope.parentCtrl.childCtrl = $scope.childCtrl;

         $scope.childCtrl.test = 'aaaa';

    };


}])

因此,現在ParentController您可以使用:


app.controller('ParentController',

    ['$scope', '$rootScope', 'service', function ($scope, $rootScope, service) {


    this.save = function() {

        service.save({

            a:  $scope.parentCtrl.ChildCtrl.test

        });

     };


}])

重要提示:

要正常工作,您必須使用指令ng-controller并使用as與我在html eg中相同的方式重命名每個控制器。


提示:在此過程中,

請使用chrome插件ng-inspector。它會幫助您理解樹。


查看完整回答
反對 回復 2019-10-06
  • 4 回答
  • 0 關注
  • 618 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號