在订购后获取最后一个ng重复项'd
Getting the last ng-repeat item after it has been orderBy'd
我试图生成一个术语及其定义的列表,但在每个字母部分的开头都放一个标题。IE
A
苹果
B
香蕉
要做到这一点,我有以下代码:
<div ng-repeat="definition in definitions">
<div ng-if="firstLetterOfTerm(definitions[$index])!=firstLetterOfTerm(definitions[$index-1])">
<h1>{{firstLetterOfTerm(definitions[$index])}}<hr></h1>
</div>
<div>{{definition.term}}</div>
</div>
如果订购了definitions
,这将非常有效。但如果不是这样,这就行不通了。IE考虑列表
["Banana", "Apple"]
根据我目前的逻辑,这将产生以下列表:
A
香蕉
B
苹果
这是因为当我执行firstLetterOfTerm(definitions[$index])
时,$index
指向原始的无序列表。有什么方法可以让它正确定位$index
吗?或者可能采用不同的方式来构建这个解决方案,从而产生相同的结果
注意:我不想预先对列表进行预排序,因为它可能很大。
您希望您的数组只为每个字母包含一个实例吗?如果定义包含[apple,香蕉,鳄梨],它会为数组中的每个字符串打印第一个字母吗一苹果b香蕉一鳄梨
第一个firstLetterOfTerm(definitions[$index-1])不会因为索引0-1不存在而返回undefined吗?Codepen`
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
<script type="text/javascript">
angular.module('myStatefulFilterApp', [])
.controller('personController', ['$scope', function($scope) {
$scope.definitions = ['apple0', 'banana0','apple1', 'banana1','apple2', 'banana2','apple3', 'banana3']
}])
.filter('startsWith', [function(){
var start = function(array, letter){
console.log(arguments)
var newArray = new Array();
angular.forEach(array, function(x){
if (letter == x.charAt(0)) newArray.push(x)
})
return newArray;
}
return start;
}])
.filter('titleCaseFilter', [ function() {
var titleCaseFilter = function(array) {
var newArray = new Array();
angular.forEach(array, function(string){
if (newArray.indexOf(string.charAt(0)) == -1) newArray.push(string.charAt(0));
});
return newArray;
}
return titleCaseFilter;
}])
</script>
<div ng-app="myStatefulFilterApp" ng-controller="personController">
<div ng-repeat="definition in definitions | titleCaseFilter">
<div>{{definition}}</div>
<div ng-repeat="def in definitions | startsWith:definition">
{{def}}
</div>
</div>
</div>
`
相关文章:
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 使用 ng 模型获取数据时遇到问题
- 延长符-在ng重复中获取子元素的文本
- 获取ng以外的重复角度值
- angularJS从ng-repeat获取类名
- AngularJS - 嵌套的ng-重复选择/选项,获取/设置所选值
- 如何获取 ng-repeat 输入 angularjs 的值
- 在移动设备上按路径或名称获取二进制图像(Ionic / Ng cordova 应用程序)
- 获取触发 ng 单击的元素
- 在订购后获取最后一个ng重复项'd
- 如何在控制器内获取ng重复单选按钮值
- 从包含ng的字段中获取表单数据,而无需使用ng模型
- AngularJS ng选项获取索引
- 从服务器获取数据,并使用$http服务和ng-change在select事件上显示它
- 获取ng中的更新值重复Angular JS
- 从服务中获取ng patten作为变量
- 使用AngularJS处理嵌套ng重复.无法通过ng单击来获取按钮
- 使用jQuery获取h4 class=“”的文本内容;ng结合”;超出Angular范围
- Angular,获取Ng中复选框(或单选框)所需的Ng重复