2015-12-19 2 views
-3
angular.module('myApp',[]) 
.controller('Parent',['$scope',function($scope){ 
    //define nothing 
}]).controller('Child',['$scope',function($scope){ 
    $scope.user={username:''};//define an object user 
}]) 



<div ng-app="myApp"> 
    <div ng-controller="Parent"> 
     {{user}}<!--print nothing--> 
     <div ng-controller="Child"> 
      {{user}} <!--print an object--> 
     </div> 
    </div> 
</div> 

Как справиться с проблемой выше без использования инъецировать в $rootScopeAngularjs родитель сфера использования ребенка scope'attribute

+0

Что именно проблема? –

+0

Я хочу, чтобы родительский пользователь печатал значение дочернего пользователя без использования $ rootScope –

+0

Downvoting это довольно жестко, учитывая, что они новы для переполнения стека. – jusopi

ответ

0

Основываясь на ваш комментарий ...

я хочу родительский пользователь напечатать значение дочернего пользователя без использования $ rootScope

... вы не можете этого сделать, поскольку размер родительского объекта не может inherit из области детства, как это определено в настоящее время. Контроллеры просмотра наследуют от своих родительских контроллеров на основе их структуры узлов.

<parent-node> 
    {{user.name}} 
    <hr/> 
    <child-node> 
     <!-- user inherit from parent node's scope by default --> 
     {{user.email}} 
    </child-node> 
    <another-child-node> 
     <!-- user inherit from parent node's scope by default --> 
     {{user.someOtherData}} 
    </another-child-node> 

Вы либо должны определить user на вашей родительской области следующим образом:

.controller('Parent',['$scope',function($scope){ 
    $scope.user = {}; 
}]) 
.controller('Child',['$scope',function($scope){ 
}]) 

... или вы можете справиться с этим с помощью директивы в зависимости от конечного пользователя-Опыта.

0

Это проблема, которая возвращается, когда люди используют $ scope без чтения в документации по областям. Вот почему я всегда говорю людям не использовать $ scope для привязки объектов/функций. Ну это и ремонтопригодность.

КОНТРОЛЛЕРЫ:

angular.module('myApp',[]) 
    .controller('Parent',['$scope',function(){ 
     //define nothing 
    }]) 
    .controller('Child',['$scope',function(){ 
     this.user = {username:''}; //define an object user 
    }]); 

ШАБЛОН:

<div ng-app="myApp"> 
    <div ng-controller="Parent as parentCtrl"> 
     {{ parentCtrl.user }} <!-- undefined --> 
     <div ng-controller="Child as childCtrl"> 
      {{ childCtrl.user }} <!-- object --> 
     </div> 
    </div> 
</div> 
Смежные вопросы