Javascript 如何在angularjs中对foreach中的数字数组进行排序?
我在控制器中具有以下范围:Javascript 如何在angularjs中对foreach中的数字数组进行排序?,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我在控制器中具有以下范围: for(x = 1; x <= 15; x++) { x = parseInt(x); Scope.numArr[x] = x; } for(x=1;x试试这个: Controller.js: vm.number = 0; vm.sample = []; function activate() { return common.activateController([getNumber()], controllerId)
for(x = 1; x <= 15; x++)
{
x = parseInt(x);
Scope.numArr[x] = x;
}
for(x=1;x试试这个:
Controller.js:
vm.number = 0;
vm.sample = [];
function activate() {
return common.activateController([getNumber()], controllerId)
.then(function () {
});
}
function getNumber(){
for (var i = 0; i <= 15; i++) {
i = parseInt(i);
vm.sample.push({ number: i });
}
}
vm.number=0;
vm.sample=[];
函数激活(){
返回common.activateController([getNumber()],controllerId)
.然后(函数(){
});
}
函数getNumber(){
对于(var i=0;i非对象数据源
也就是说,您可以轻松创建将对象哈希转换为数组的自定义筛选器:
app.filter('toArray', function() {
return function(data) {
var array = [];
for(var d in data) {
array.push({key:d, value:data[d]});
}
return array;
}
});
然后可以将过滤器应用于对象数据源:
<body ng-app="app" ng-controller='MyController'>
<div ng-repeat="item in arr | toArray | orderBy: 'key':true">
{{item.key}}{{item.value}}
</div>
</body>
{{item.key}{{item.value}
toArray筛选器将对象数据源转换为具有键和值属性的对象文字数组。orderBy然后根据指定为第二个参数(“键”或“值”)的属性对结果数组进行排序。最后,第三个参数指定是否反转数组
在选择中使用
<select data-ng-model="printValue" ng-options="item.key as item.value for item in arr | toArray | orderBy: 'key':true">
<option value="">Print options</option>
</select>
打印选项
试试这个
未分类
<option ng-repeat="key in notSorted(numArr).slice().reverse()" ng-init="value = numArr[key]" value="{{key}}">{{value}}</option>
html
打印选项
{{value}}
剧本
var DemoApp = angular.module("DemoApp", []);
DemoApp.controller("DemoController",
function DemoController($scope) {
$scope.numArr = {};
for (var x = 1; x <= 15; x++) {
x = parseInt(x);
$scope.numArr[x] = x;
}
$scope.notSorted = function (obj) {
if (!obj) {
return [];
}
return Object.keys(obj);
}
});
var DemoApp=angular.module(“DemoApp”,[]);
DemoApp.controller(“DemoController”,
功能控制器($scope){
$scope.numar={};
对于(var x=1;x hi parthicool05,为什么我们需要为此编写一个函数?这是一个类似于“+”或“-”Scope.name对字符串数据进行排序的简单方法。难道没有更简单的方法吗?对于向下投票的爱好者,如果你有足够的知识来提供一个简单的答案,那么你应该在这里提供那个该死的简单答案。向下投票只表示你的无知兰斯和不接受事实。我可以建议你少大声嚷嚷,把注意力集中在你的问题上吗?对每个人生气肯定会让你落选。嗨,布拉德,我明白你的意思,但我们如何解决这个简单的问题。我有一个数组,想用veiw显示它。但是,如果它自动重新排列数据,解决方案是什么?在文档中提到了什么?花了我一天多的时间,我手头上仍然没有解决方案。这可能会有帮助。@请看一下我的回答谢谢,非常有解释性。但这看起来像是一种很难的方法。如果你首先绑定到数组对象文本,则不需要自定义筛选器,而且一切都很简单更容易。
<select data-ng-model="printValue">
<option value="">Print options</option>
<option ng-repeat="key in notSorted(numArr)" ng-init="value = numArr[key]" value="{{key}}">{{value}}</option>
</select>
var DemoApp = angular.module("DemoApp", []);
DemoApp.controller("DemoController",
function DemoController($scope) {
$scope.numArr = {};
for (var x = 1; x <= 15; x++) {
x = parseInt(x);
$scope.numArr[x] = x;
}
$scope.notSorted = function (obj) {
if (!obj) {
return [];
}
return Object.keys(obj);
}
});
<option ng-repeat="key in notSorted(numArr).slice().reverse()" ng-init="value = numArr[key]" value="{{key}}">{{value}}</option>