如何在不更改整个列表的情况下编辑列表中的项目?
How can I edit an item in a list without changing the whole list?
我有一个可能被标记的讨论列表。但是目前,当用户单击标记按钮时,会为所有项目触发 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;
};
$scope.dis
对所有 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;
};
我会在每个单独的 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;
};
我有一个可能被标记的讨论列表。但是目前,当用户单击标记按钮时,会为所有项目触发 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;
};
$scope.dis
对所有 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;
};
我会在每个单独的 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;
};