Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS指令中的视图更新问题_Angularjs_Angularjs Directive - Fatal编程技术网

AngularJS指令中的视图更新问题

AngularJS指令中的视图更新问题,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我在应用程序中使用以下指令实现“添加标签”功能: directives.addTag = function ($http) { return { link: function (scope, element, attrs) { element.bind('keypress', function (event) { if (event.keyCode == 13) { /*If enter key pressed*/

我在应用程序中使用以下指令实现“添加标签”功能:

directives.addTag = function ($http) {
    return {
        link: function (scope, element, attrs) {
            element.bind('keypress', function (event) {
                if (event.keyCode == 13) { /*If enter key pressed*/

                    if (!scope.$parent.post) { //For KShare
                        var newTagId = "tagToNote";

                    }
                    else { //For KB
                        var newTagId = "tagToAddFor" + scope.post.meta.id;
                    }
                    var tagValue = element[0].value;

                    if (tagValue == "")
                        return;

                    if (!scope.$parent.post) {
                        scope.$parent.tags.push(tagValue);
                        scope.addTagButtonClicked = false;
                    }
                    else {
                        scope.post.tags.push(tagValue);
                        scope.addTagButtonClicked = false;
                    }
                    scope.$apply();

                    element[0].value = "";
                }
            });
        }
    }
}
这是用于呈现标记的HTML代码:

<div class="tagAdditionSpan" ng-repeat="tag in post.tags" ng-mouseenter="hover = true" ng-mouseleave="hover = false">
            <span>{{tag}}</span>
            <span class="deleteIconSpan" ng-class="{deleteTagIcon: hover}"  ng-click="$parent.deleteTag($index,$parent.$index);"></span>
</div>

{{tag}}
我有一个文本框,当用户在其中键入标签的名称并按下“回车”键时,可以添加标签。在页面加载时,我静态地将1个标记填充到“tags”数组中

我甚至可以使用标签添加标签,它反映在视图中。但是,在添加2或3个标记后,它开始出现错误,视图不再使用添加的标记进行更新

我试着调试它,发现它正在“scope.post.tags”数组中更新,但没有反映在视图中


我做错了什么?

根据收到的评论,我能够解决这个问题ng repeat“用于在添加重复标记时中断循环,因此视图未相应更新

这解决了问题(在ng repeat中添加了“跟踪人”:


{{tag}}

控制台会告诉你什么?(F12或SHOT+Ctrl+i)您是否添加了任何重复标记?如果添加重复项,则会破坏ng-repeat.eddiec,如果这是一个问题,则可以使用“跟踪方式”绕过它。是的,这解决了问题,谢谢Erik和Eddiec。重复标签是指“重复标签名”还是“重复标签ID”?因为我没有给标签任何id。
<div class="tagAdditionSpan" ng-repeat="tag in post.tags track by $index" ng-mouseenter="hover = true" ng-mouseleave="hover = false">
            <span>{{tag}}</span>
            <span class="deleteIconSpan" ng-class="{deleteTagIcon: hover}"  ng-click="$parent.deleteTag($index,$parent.$index);"></span>
</div>