我如何为 AngularJS 中的对象列表重复 html?
How can i repeat html for a list of objects in AngularJS?
我在 angularjs 中有一个对象列表,我用它填充了一些 html 如下
我有一个包含项目的列表,例如文本将显示在列表中,如
Item1
Item2
Item3
现在,当用户 select 其中一个时,我将数据绑定到页面上的以下控件,但如果他们 select 另一个,则它绑定到控件和第一个
selections ui 数据不再显示。
<div class="form-group" >
<label for="sEntity" class="col-md-3 control-label">S-Entity</label>
<div class="col-md-9">
<div id="sEntity" options="sList" ng-model=selected ng-bind="selectedValue"></div>
</div>
</div>
<div class="form-group">
<label for="sColumns" class="col-md-3 control-label">Mappings</label>
<div class="col-md-9">
<div id="sColumns" options="sColumnsList"
selected-model="sColumnsLookup" checkboxes="true"></div>
</div>
</div>
要求一些 gui舞蹈关于什么是在页面上播放此内容的最佳方式,这样当他们 select 以某种方式播放它时
添加到容器并显示在屏幕上,有点像附加 html。此外,如果用户决定从上面的列表中删除一个值,比如说 Item3,那么它将从容器中删除
html 的。
ng-repeat 会工作还是指令会 required 以在每次用户 selects 时创建动态 html?
您可以使用 ng-html-bind
轻松绑定 html
<p ng-bind-html="myText"></p>
其中 $scope.myText = <....some html text..>
你可以在 ng-repeat 中使用这个东西
您需要先声明一个可以使用ng-repeat
迭代的JSON 结构。之后,您可以使用 $index
for ng-repeat
来访问每个项目的索引并推送您的映射对象。
使用双向绑定,只要您按下项目,内容就会显示在屏幕上。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.list = [{
name: 'Item 1',
mappings: []
}, {
name: 'Item 2',
mappings: []
}, {
name: 'Item 3',
mappings: []
}];
$scope.addMapping = index => {
// this is where your service call goes
$scope.list[index].mappings.push({
name: `Mapping ${index + 1}.1`,
id: new Date().getTime(),
selected: true
}, {
name: `Mapping ${index + 1}.2`,
id: new Date().getTime(),
selected: false
})
};
});
.entity {
background: #ccc;
margin-bottom: 1em;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<div class="form-group entity" ng-repeat="item in list">
<div ng-click="addMapping($index)">{{ item.name }}</div>
<div class="form-group" ng-show="item.mappings.length > 0" ng-repeat="mapping in item.mappings">
<div class="">
<label for="{{$index}}_{{mapping.id}}">{{ mapping.name }}</label>
<input type="checkbox" id="{{$index}}_{{mapping.id}}" ng-model="mapping.selected"/>
</div>
</div>
</div>
<pre>{{list | json}}</pre>
</div>
您可以使用 angularjs 中提供的 ng-repeat。用于循环对象数组,可以在 html.
中打印
<h1 ng-repeat="x in records">{{x}}</h1>
这里的 records 是一个对象数组,x 是要显示的单个对象。您还可以使用 x.name 等点符号访问 x 的键
我在 angularjs 中有一个对象列表,我用它填充了一些 html 如下 我有一个包含项目的列表,例如文本将显示在列表中,如
Item1
Item2
Item3
现在,当用户 select 其中一个时,我将数据绑定到页面上的以下控件,但如果他们 select 另一个,则它绑定到控件和第一个 selections ui 数据不再显示。
<div class="form-group" >
<label for="sEntity" class="col-md-3 control-label">S-Entity</label>
<div class="col-md-9">
<div id="sEntity" options="sList" ng-model=selected ng-bind="selectedValue"></div>
</div>
</div>
<div class="form-group">
<label for="sColumns" class="col-md-3 control-label">Mappings</label>
<div class="col-md-9">
<div id="sColumns" options="sColumnsList"
selected-model="sColumnsLookup" checkboxes="true"></div>
</div>
</div>
要求一些 gui舞蹈关于什么是在页面上播放此内容的最佳方式,这样当他们 select 以某种方式播放它时 添加到容器并显示在屏幕上,有点像附加 html。此外,如果用户决定从上面的列表中删除一个值,比如说 Item3,那么它将从容器中删除 html 的。 ng-repeat 会工作还是指令会 required 以在每次用户 selects 时创建动态 html?
您可以使用 ng-html-bind
轻松绑定 html<p ng-bind-html="myText"></p>
其中 $scope.myText = <....some html text..>
你可以在 ng-repeat 中使用这个东西
您需要先声明一个可以使用ng-repeat
迭代的JSON 结构。之后,您可以使用 $index
for ng-repeat
来访问每个项目的索引并推送您的映射对象。
使用双向绑定,只要您按下项目,内容就会显示在屏幕上。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.list = [{
name: 'Item 1',
mappings: []
}, {
name: 'Item 2',
mappings: []
}, {
name: 'Item 3',
mappings: []
}];
$scope.addMapping = index => {
// this is where your service call goes
$scope.list[index].mappings.push({
name: `Mapping ${index + 1}.1`,
id: new Date().getTime(),
selected: true
}, {
name: `Mapping ${index + 1}.2`,
id: new Date().getTime(),
selected: false
})
};
});
.entity {
background: #ccc;
margin-bottom: 1em;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<div class="form-group entity" ng-repeat="item in list">
<div ng-click="addMapping($index)">{{ item.name }}</div>
<div class="form-group" ng-show="item.mappings.length > 0" ng-repeat="mapping in item.mappings">
<div class="">
<label for="{{$index}}_{{mapping.id}}">{{ mapping.name }}</label>
<input type="checkbox" id="{{$index}}_{{mapping.id}}" ng-model="mapping.selected"/>
</div>
</div>
</div>
<pre>{{list | json}}</pre>
</div>
您可以使用 angularjs 中提供的 ng-repeat。用于循环对象数组,可以在 html.
中打印<h1 ng-repeat="x in records">{{x}}</h1>
这里的 records 是一个对象数组,x 是要显示的单个对象。您还可以使用 x.name 等点符号访问 x 的键