2013-07-04 31 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小時的時間,而且在嘗試時我甚至沒有在正確的路線上。 –

相關問題