添加新模型后,如何更新Angular的顺序?

时间:2013-07-04 16:33:29

标签: javascript angularjs angularjs-orderby

我刚刚开始学习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年(在原始expense之后注入)。

我尝试在expenses函数末尾手动过滤add_expense,这没有任何区别,并使用$scope.$apply(),这给了我一个错误($ apply)已经在进行中。)

1 个答案:

答案 0 :(得分:0)

而不是像日期那样添加日期:&#39; 01/05 / 2013&#39;  使用date: new Date('01/05/2013'),它将完美地运作