我刚开始学习 Angular,并认为这是微不足道的,但我无法理解它..
我有一个列表expenses
,按date
属性排序:
<div class="expense" ng-repeat="exp in expenses | orderBy:'date'">
<div class="c date">{{ exp.date | date: 'dd/MM/yyyy' }}</div>
<div class="c amount">{{ exp.amount | currency:'£' }}</div>
<div class="c category">{{ exp.category }}</div>
<div class="c note">{{ exp.note }}</div>
</div>
我正在expenses
控制器中初始化一些:
$scope.expenses = ({date: '01/05/2013', amount: 137, category: 'Groceries', note: ""},
{date: '01/03/2011', amount: 100, category: 'Groceries', note: ""},
{date: '05/05/2013', amount: 10, category: 'Entertainment', note: ""});
这些都首先以正确的顺序显示(2011、2013、2013)。然后我可以成功地将一个添加expense
到此列表中:
$scope.add_exp = function() {
$scope.expenses
.push({date: $scope.date, amount: $scope.amount, category: $scope.category, note: $scope.note});
// Reset fields
$scope.date = '';
$scope.amount = '';
$scope.category = '';
$scope.note = '';
};
这里有一个问题——新增加的费用实际上是有序的,但初始化时出现的那些没有考虑在内。
例如,我将 2014 年的项目添加到我的expenses
. 新订单将是 2011、2013、2013、2014。然后我添加一个带有 2007 年的项目,希望它是列表中的第一个。相反,新订单是 2011、2013、2013、2007、2014(它在原始s之后注入)。expense
我尝试expenses
在函数末尾手动过滤add_expense
,这没有任何区别,使用$scope.$apply()
,这给了我一个错误($apply 已经在进行中)。