我是棱角分明的新手并且想知道是否可以用变量替换ng-repeat指令中的firstP?我正在使用AngularJS v1.6.6
ng-repeat="option in people['firstP']"
var people = {
"firstP": [
"",
"James",
"Jack",
],
"SecondP": [
"",
"Bill",
"Bob",
]
};
答案 0 :(得分:4)
是否可以用变量?
替换ng-repeat指令中的firstP
是的,在您使用Angular中的常规javascript 对象括号表示法之后,可以用变量替换firstP
。
<强>解决方案:强>
如果您尝试动态显示people
对象内容,则可以这样做:
<div ng-repeat="(key, value) in people">
<select>
<option ng-repeat="option in people[key]">{{option}}</option>
</select>
</div>
首先,您需要遍历people
对象keys
,然后为每个key
获取相关的array
,然后循环显示每个array
以显示它的内容。
注意:强>
请注意,我们可以直接在people[key]
中将value
替换为ng-repeat
,使其变为ng-repeat="option in value"
。
我刚才使用people[key]
来回答您的具体问题。
<强>演示:强>
这是一个现场工作Plunker。
答案 1 :(得分:1)
我认为您必须将people对象分配给$ scope变量才能访问html中的people对象。
<强> HTML 强>
<html ng-app="myApp" ng-controller="testCtrl">
<ul>
<li ng-repeat="name in people[element]">{{name}}</li>
</ul>
</html>
<强> JS 强>
var app = angular.module('myApp', []);
var testCtrl = function($scope){
$scope.element = 'firstP';
$scope.people = {
"firstP" : [
"Jake",
"James",
"Jack",
],
"SecondP" : [
"",
"Bill",
"Bob",
]};
}
app.controller('testCtrl',['$scope',testCtrl]);
答案 2 :(得分:0)
根据我的理解, 使用$ scope变量在控制器中定义数组: 在控制器中:
app.controller('nameCtrl', function($scope) {
$scope.people = { firstP: ['james', 'jack'] };
});
在Html中:
<div ng-controller="nameCtrl">
<ul>
<li ng-repeat="option in people.firstP">{{option}}</li>
</ul>
</div>
试试这个。希望它有帮助..!
答案 3 :(得分:0)
您的代码看起来很可疑,因为它会填充一个选择(下拉列表)框。如果是这种情况,请使用ng-options for Angular 1:
像ngFor in Angular 2中的在$ scope上给出这个项目数组:
$scope.items = [{ id: 1, label: 'aLabel', subItem: { name: 'aSubItem' } }, { id: 2, label: 'bLabel', subItem: { name: 'bSubItem' } }];
这将有效:
<select ng-options="item as item.label for item in items track by item.id" ng-model="selected"></select> $scope.selected = $scope.items[0];
<select name="selectmake" [(ngModel)]="makeListFilter"> <option *ngFor="let muscleCar of muscleCars" [ngValue]="muscleCar"> {{muscleCar.name}} </option> </select>