2016-02-20 24 views
1

我真的可以在這裏使用一些幫助。我有2個自定義指令(第二個嵌套在第一個)。除了第二條指令外,所有的代碼都運行正常。當我嘗試點擊刪除按鈕,我得到了開發工具以下錯誤:越來越TypeError:在ng-repeat中使用自定義指令時,無法讀取未定義的屬性「朋友」

TypeError: Cannot read property 'friends' of undefined 
    at vm.removeFriend 

我已經試過一切,在我束手無策,但無法想出解決辦法。有人可以協助嗎?這裏是Plunker:

https://plnkr.co/edit/jmIifQPPO7Xmiw6rVTnM

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" /> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script> 


<script src="script.js"></script> 

<script src="mainController.js"></script> 
<script src="userInfoCard.js"></script> 
<script src="removeFriend.js"></script> 

<aa-user-info-card user="vm.user"> </aa-user-info-card> 

回答

0

在此plunker可以刪除一個朋友,但我不知道這是解決方案,您正在尋找的那種。

https://plnkr.co/edit/T8moxHdbVxF9vtOfFAa5?p=preview

在userInfo.html我已經改變了這一行:

<div ng-init='user = vm.user'> 
    <aa-remove-friend ></aa-remove-friend> 
</div> 

而且在removeFriend.js改變了這個:

var idx = $scope.user.friends.indexOf(friend); 
if (idx > -1) { 
    $scope.user.friends.splice(idx, 1); 
} 

我希望這有助於。

Regards

+0

aha。這是完全合理的。特別是,$ scope而不是vm,因爲我正在破壞範圍並維護它。我不知道你可以同時使用$ scope和vm。非常感謝你的幫助!!我很好奇的是,如果我從$ scope獲得用戶對象,並且removeFriend.js指令從父項繼承,那麼爲什麼需要執行ng-init? –

+0

嗨!事實是,我沒有找到任何其他方式將用戶從外部範圍發送到內部範圍。我認爲如果你在aa-user-info-card中發送everthing作爲參數,你可以這樣做,但你也應該把friend作爲參數。 –

相關問題