Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs子控制器-访问变量_Angularjs - Fatal编程技术网

angularjs子控制器-访问变量

angularjs子控制器-访问变量,angularjs,Angularjs,假设我有以下几点: <div ng-controller="PeopleCtrl"> <div ng-repeat="person in people" ng-controller="PersonCtrl"> <p>{{person.name}}</p> <div>[LOTS OF COMPLICATED DATA RELATED TO A PERSON THAT I NEED TO ORGANI

假设我有以下几点:

<div ng-controller="PeopleCtrl">
    <div ng-repeat="person in people" ng-controller="PersonCtrl">
        <p>{{person.name}}</p>
        <div>[LOTS OF COMPLICATED DATA RELATED TO A PERSON THAT I NEED TO ORGANIZE IN A CONTROLLER]</div>
    </div>
</div>

在上面的PersonCtrl中,如何访问ng repeat中提到的“person”对象?

它将以与父控制器相同的名称提供。要查看继承了哪些变量,只需进入子控制器和控制台。log($scope)这是一个对象,您可以在调试器控制台中展开它,查看是否正确设置了继承

 app.controller('PersonCtrl', ['$scope', function($scope){
      $scope.name;
 });
当控制器使用原型继承从彼此继承时,如果在当前作用域中找不到名称,它们将在链的更上一层查找名称

下面是一个例子:

HTML:


{{person.name}

[我需要在控制器中组织大量与人员相关的复杂数据]
您只需在
PersonCtl
中的
$scope.person
下访问它即可。嵌套作用域从其上部作用域继承

请参见以下示例:

HTML:

<div ng-controller="PeopleCtrl">
    <div ng-repeat="person in people" ng-controller="PersonCtrl">
        <p>
          First Name: {{person.firstName}}<br/>
          Last Name: {{person.lastName}}
        </p>

        <div>
          Full Name (from <code>PersonCtrl</code>): {{person.fullName}}
        </div>
        <hr>
</div>
var app = angular.module('plunker', []);

app
.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
})
.controller('PeopleCtrl', function($scope) {
  $scope.people = [
    { id: '0', lastName: 'White', firstName: 'Walt'},
    { id: '1', lastName: 'Black', firstName: 'Hank'}
  ];
})
.controller('PersonCtrl', function($scope) {
  console.log('PersonCtrl');
  console.log($scope.person);

  $scope.person.fullName = $scope.person.lastName + ', ' + $scope.person.firstName;
});
JS:

<div ng-controller="PeopleCtrl">
    <div ng-repeat="person in people" ng-controller="PersonCtrl">
        <p>
          First Name: {{person.firstName}}<br/>
          Last Name: {{person.lastName}}
        </p>

        <div>
          Full Name (from <code>PersonCtrl</code>): {{person.fullName}}
        </div>
        <hr>
</div>
var app = angular.module('plunker', []);

app
.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
})
.controller('PeopleCtrl', function($scope) {
  $scope.people = [
    { id: '0', lastName: 'White', firstName: 'Walt'},
    { id: '1', lastName: 'Black', firstName: 'Hank'}
  ];
})
.controller('PersonCtrl', function($scope) {
  console.log('PersonCtrl');
  console.log($scope.person);

  $scope.person.fullName = $scope.person.lastName + ', ' + $scope.person.firstName;
});

请重读。在其自身的控制器中没有重复的控制器。PeopleCtrl和PersonCtrl是两个不同的控制器。-很抱歉,这是因为之前的评论已被删除。在person控制器中,您可以筛选数据$scope.person.name=$filter('my',$scope.person.name)
var app = angular.module('plunker', []);

app
.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
})
.controller('PeopleCtrl', function($scope) {
  $scope.people = [
    { id: '0', lastName: 'White', firstName: 'Walt'},
    { id: '1', lastName: 'Black', firstName: 'Hank'}
  ];
})
.controller('PersonCtrl', function($scope) {
  console.log('PersonCtrl');
  console.log($scope.person);

  $scope.person.fullName = $scope.person.lastName + ', ' + $scope.person.firstName;
});