繁体   English   中英

如何在不更改整个列表的情况下编辑列表中的项目?

[英]How can I edit an item in a list without changing the whole list?

我列出了可能被举报的讨论列表。 目前然而,当用户点击一个标志按钮时, isflagged触发所有项目,而不是只是被标记,则需要刷新页面来标记其他讨论的项目。 我将如何拥有它,以便仅更改被单击的讨论,而不是所有讨论。

由于范围继承,我有了scope.dis

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 $scope.dis常见。 为了跟踪讨论的标记,请保留地图或在讨论中添加属性。

像这样:

<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;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM