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;
});