2016-08-09 52 views
1

我有一個可能被標記的討論列表。然而,目前當用戶點擊標誌按鈕時,所有項目都會觸發isflagged,而不僅僅是被標記的項目,您需要刷新頁面以標記其他討論。我將如何獲得它,以便只有被點擊的討論發生變化,而不是每次討論。如何在不更改整個列表的情況下編輯列表中的項目?

我有scope.dis因爲scope inheritance

HTML:

<li ng-repeat="discussion in Discussions"> 
    <div ng-if="canFlag(discussion)"> 
     <div ng-switch="dis.isFlagging"> 
      <div ng-switch-when="false" 
       ng-click="flagDiscussion(discussion.id)" 
      </div> 
      <div ng-switch-when="true"> 
       Successfully flagged</div> 
     </div> 
    </div> 
</li> 

JS:

$scope.dis = {isFlagging: false}; 
$scope.flagDiscussion = function(discussionId) { 
    Service.flagDiscussion(discussionId); 
    $scope.dis.isFlagging = true; 
}; 
+0

添加canFlag代碼 –

回答

1

$scope.dis是alll discussions常見。爲了跟蹤討論標記,請保留地圖或將屬性添加到討論中。

事情是這樣的:

<div ng-switch="discussion.isFlagging"> 
    <div ng-switch-when="false" ng-click="flagDiscussion(discussion)" /> 
    <div ng-switch-when="true">Successfully flagged</div> 
</div> 

$scope.flagDiscussion = function(discussion) { 
    Service.flagDiscussion(discussion.id); 
    discussion.isFlagging = true; 
}; 
+0

你能否進一步解釋或舉一個例子,搞不清你意思是,謝謝! – chonglawr

+0

@chonglawr查看更新。 –

1

我會繼續在每一個人discussion對象跟蹤了這一點。你不小心把它設置成只有一個$scope.dis這就是它適用於每一件物品的原因。跟蹤這樣的以個人爲基礎的isFlagging狀態:

HTML:

<li ng-repeat="discussion in Discussions"> 
<div ng-if="canFlag(discussion)"> 
    <div ng-switch="discussion.isFlagging"> 
     <div ng-switch-when="false" 
      ng-click="flagDiscussion(discussion)"> 
     </div> 
     <div ng-switch-when="true"> 
      Successfully flagged</div> 
     </div> 
    </div> 
</li> 

JS:

$scope.flagDiscussion = function(discussion) { 
    Service.flagDiscussion(discussion.id); 
    discussion.isFlagging = true; 
}; 
相關問題