Как разделить $scope между контроллерами с AngularJs, можем ли мы получить доступ к $scope одного контроллера с другого контроллера?

Мы можем получить доступ к области видимости одного контроллера от другого контроллера? Мне нужно получить все данные в родительском, дочернем и внуковом контроллере, возможно ли это

Вот мой сценарий

var app = angular.module('myApp', []);

app.controller('ParentController',ParentController);
function ParentController($scope)
{
    $scope.parentName="Parent"
}
app.controller('ChildController1',ChildController1);
function ChildController1($scope)
{
    $scope.childName1="Child1"
}
app.controller('ChildController2',ChildController2)
function ChildController2($scope)
{
    $scope.childName2="Child2"
}
app.controller('GrandChildController1',GrandChildController1);
function GrandChildController1($scope)
{
    $scope.grandChildName1="GrandChild1"
}

Вот мой вид кода

<div>  ng-app="myApp">

<div ng-controller="ParentController">

    Parent:{{parentName}}
    Child1:{{childName1}}
    Child2:{{childName2}}
    GrandChild1:{{grandChildName1}}

    <div ng-controller="ChildController1">

        Parent:{{parentName}}
        Child1:{{childName1}}
        Child2:{{childName2}}
        GrandChild1:{{grandChildName1}}

        <div ng-controller="GrandChildController1">     

            Parent:{{parentName}}
            Child1:{{childName1}}
            Child2:{{childName2}}
            GrandChild1:{{grandChildName1}} 

        </div>

    </div>

    <div ng-controller="ChildController2">

        Parent:{{parentName}}
        Child1:{{childName1}}
        Child2:{{childName2}}
        GrandChild1:{{grandChildName1}}

    </div>  
</div>

</div>

Я не получил дочернюю область в родительском контроллере. Что я буду делать. Напишите какой-либо сервис или что-то еще. Спасибо

1 ответ

Взгляните на этот урок, он короткий и очень хорошо объясняет это.

Просто $scope наследование возможно путем вложения контроллеров в ваше представление

<div ng-controller="a">
  {{num}}
  <div ng-controller="b">
    {{num}}
  </div>
</div>
app.controller('a', a);
function a($scope) {
  $scope.num = 1
}


app.controller('b', b);
function b($scope) {
    //$scope.num is inherited by the parent controller
}

Вы также можете всегда использовать $ rootScope для передачи данных между контроллерами, обычно используя $broadcast а также $emit диспетчеры.

Другие вопросы по тегам