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>