2013-07-04 32 views
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年(原expense s后注入)。

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

+0

你能使它重新产生问题小提琴吗? – Blackhole

回答

0

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

+0

谢谢---我在初始'费用'数组中初始化一个Date对象,以及在推新对象时它也起作用! – Elise

+0

按照Elise的说法,在初始范围和推送范围内都执行'new Date()'使它对我有用。在解决这个问题上需要6小时的时间,而且在尝试时我甚至没有在正确的路线上。 –

相关问题