0

我刚开始学习 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 已经在进行中)。

4

1 回答 1

0

而不是像 date:'01/05/2013' 使用添加日期date: new Date('01/05/2013'),它会完美地工作

于 2013-07-04T16:54:03.920 回答