回答

2

這是因爲在第二種情況下,您覆蓋設置爲參考的cartContent因此,在覆蓋內容時,對cart所做的任何更改都不會反映到範圍中,因爲$ scope.cart仍指向舊引用。因此,在您的控制器中,將$scope.cart設置爲Cart服務和訪問cartContent,以便scope.cart現在具有對Cart對象本身的引用,並且對其屬性所做的任何更改也將反映在該範圍的屬性中。

controller('cartBoxCtrl', function ($scope, Cart){ 
    $scope.cart = Cart; //<-- here 
}); 

<li ng-repeat="product in cart.cartContent track by $index"> 

還要注意軌道通過使用(這裏我用$指數,而不是你可以使用該對象的前一個獨特的屬性: - product.id),這樣名單將由被跟蹤,而不是角創建唯一密鑰$$haskkey

Plnkr

或者,如果你想清理cartContent,仍然保持cartContent作爲參考在$scope.cart那麼你可以做: -

this.addProduct = function (product) { 
    //Cleanup the current array and insert new item 
    this.cartContent.splice(0, this.cartContent.length, product); 

}; 

Plnkr

+0

你的答案的第二部分是正是我需要的:)謝謝 ! – michaelcurry 2014-09-13 00:21:20

+1

@michaelcurry哦解釋不是必需的? :P – PSL 2014-09-13 01:49:41

+0

哦,那是:P它讓我解釋了我在做什麼。謝謝。 [過去兩天從頭開始學習Angular] – michaelcurry 2014-09-13 01:59:38