我正在尝试对从JSON源填充的数据表进行排序。我的代码如下:
HTML:
<div ng-app="myApp">
<div ng-controller="PurchasesCtrl">
<table cellspacing="0">
<tr class="first">
<th class="first" ng:click="changeSorting(purchases.date)">Date</th>
<th ng:click="changeSorting(purchases.text)">Description</th>
<th ng:click="changeSorting(purchases.price)">Amount</th>
<th ng:click="changeSorting(purchases.availability)">Status</th>
</tr>
<tr ng-repeat="purchase in purchases.data">
<td class="first">{{purchase.date}}</td>
<td>{{purchase.text}}</td>
<td>{{purchase.price}}</td>
<td>{{purchase.availability}}</td>
</tr>
</table>
</div>
</div>
JS:
var myApp = angular.module("myApp",[]);
myApp.factory("Purchases", function(){
var Purchases = {};
Purchases.data = [
{
date: "10/05/2012",
text: "1 Lorem ipsum dolor sit amet ipsum dolor",
price: "£123.45",
availability: "1 Available until 10th Dec 2013"
},
{
date: "24/05/2012",
text: "2 Lorem ipsum dolor sit amet ipsum dolor",
price: "£234.56",
availability: "2 Available until 10th Dec 2013"
},
{
date: "20/05/2012",
text: "3 Lorem ipsum dolor sit amet ipsum dolor",
price: "£345.67",
availability: "3 Available until 10th Dec 2013"
}
];
return Purchases;
});
function PurchasesCtrl($scope, Purchases){
$scope.purchases = Purchases;
$scope.changeSorting = function(column) {
var sort = $scope.sort;
if (sort.column == column) {
sort.descending = !sort.descending;
} else {
sort.column = column;
sort.descending = false;
}
};
}
小提琴:http :
//jsfiddle.net/7czsM/1/
如您所见,我试图将click函数添加到表标题中,以调用对数据进行排序的函数,但是它不起作用。
我已经在这里看到了这种方法的示例,该示例可以起作用:http :
//jsfiddle.net/vojtajina/js64b/14/,但是当我尝试将相同类型的方法应用于我的场景时,它很快就会崩溃;
例如,我尝试通过添加以下内容以编程方式在JSON中添加表头:
var Purchases = {};
Purchases.head = [
{
date: "Date",
text: "Text column",
price: "Price column",
availability: "Availability column"
}
Purchases.data = [
{
date: "10/05/2012",
text: "1 Lorem ipsum dolor sit amet ipsum dolor",
price: "£123.45",
availability: "1 Available until 10th Dec 2013"
},
这只会阻止任何工作,但是我认为可以向Angular变量添加多组数据吗?
我是Angular的新手,所以我真的很坚持。任何指针将不胜感激,谢谢。
更新的jsfiddle:http :
//jsfiddle.net/gweur/
sza是正确的,您确实忘记了$ scope.sort对象,但是在ng-repeat中也缺少了orderBy过滤器
|orderBy:sort.column:sort.descending
此外,您需要将列名显式传递给changeSorting()函数,例如
ng-click="changeSorting('text')"
不知道是否有其他方法可以处理此问题。
最后,ng-click是您所使用的AngularJS版本的正确语法。
问题内容: 我有一个HTML表格,想通过单击表格标题(在ctrl中)对记录(在ctrl中)进行排序, 任何人都可以解释为什么这样做有效: 那不是: 这是记录的代码: 我的表格中有58列,因此遍历表格标题会更好。 问题答案: 正如David所建议的,这可能与范围有关。由于ngRepeat创建了一个新的作用域,因此您需要为每个列标题设置和。 确保您在同一范围内修改值的一种方法是在该范围内创建一个函数,
我正在使用JAXB来解封xml文件。这是我的元素特性代码,但是我想在元素特性中有一个特殊的元素顺序,像这样 我检查了一些@XmlType教程(propOrder = {}),但我找不到一种方法来订购元素列表,如这里的属性元素。 这是我的代码。 它总是抛出异常,因为我在propOrder中只定义了一个属性。但是由于属性是多重的,可能是一个或多个,我不知道如何实现它。或者你知道其他排序元素的方法吗 提
问题内容: 在AngularJS中的元素 上是否易于使用 ? 如果重新排序项目会很棒,那就是将自动传播的订单重新排列到源数组中。恐怕这两个系统会打架。有一个更好的方法吗? 问题答案: Angular UI具有可排序的指令,请单击此处进行演示 位于ui-sortable的代码,用法:
可排序列表是列表的扩展,可以对列表进行排序. 让我们来看一下可排序列表元素的布局结构: <!-- 加在列表区上额外的“sortable”类 --> <div class="list-block sortable"> <li> <div class="item-content"> <div class="item-media">...</div> <div class
问题内容: 当前,在我的项目中,我们正在使用JSDoc,我们最近开始实现Angular,并且我想继续使用JSDoc,以确保所有文档都位于同一位置。 我看过的人主要是说要使用ngDoc,但这并不是一个切实可行的选择,因为我们将始终使用单独的JavaScript,并且理想情况下,我会将所有内容整合在一起。 目前,这是我所拥有的,但是无法为run()的文档添加任何想法? 问题答案: 我也遇到了这个问题。
问题内容: 我在MVC 4和AngularJS(+ twitter bootstrap)中有一个项目。我通常在MVC项目中使用“ jQuery.Validate”,“ DataAnnotations”和“ Razor”。然后,在我的web.config中启用这些密钥,以在客户端上验证模型的属性: 例如,如果我的模型中有以下内容: 使用此Cshtml: html结果将是: 但是现在当我使用Angul