gpt4 book ai didi

javascript - 带有 templateUrl 和 ng-repeat 的自定义指令

转载 作者:行者123 更新时间:2023-11-30 05:43:50 33 4
gpt4 key购买 nike

我已经研究这个问题几个小时了,最后 i reproduced it on plunker .

这是我的问题:

当使用外部资源作为模板的自定义指令与 ng-repeat 结合使用时, View 在模型更改时无法正确呈现。

在我的示例中,单击链接将替换模型,但旧数据尚未清理。

如果我使用 template: 'stringTemplate' 而不是 templateUrl: 'urlToTemplate',它就可以正常工作。仍然不知道这是一个错误还是什么......

部分代码:

angular.module('test', [])
.run(function($rootScope) {
$rootScope.topics = [{
content: 'Click here to change reply',
replys: [{
content: 'Reply test...',
}]
}];
})
.directive('topic', function() {
return {
replace: true,
restrict: 'E',
templateUrl: 'topic.htm',
link: function(scope) {
scope.reply = function(input) {
scope.topic.replys = [{ content: '"Reply test..." should be replaced, but it\'s not!' }];
}
}
};
})
.directive('reply', function() {
return {
replace: true,
restrict: 'E',
// template: '<div><div ng-bind="reply.content"></div></div>' //this works fine
templateUrl: 'reply.htm' // same content
};
});

最佳答案

我做了一些研究,看来您不是唯一遇到这个问题的人:

https://github.com/angular/angular.js/issues/2151

用户 ishw 提到,作为一个快速修复:

“对于那些可能还没有意识到的人:这是因为你的 ng-repeat 位于指令模板的根元素上。将你的 ng-repeat 包裹在任何元素中就可以了。”

I tried this with your plunkr and it seems to be working :

  <div> 
<div class="topic" ng-bind="topic.content" ng-click="reply()"></div>
<div ng-repeat="reply in topic.replys"><reply></reply></div>
</div>

关于javascript - 带有 templateUrl 和 ng-repeat 的自定义指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177738/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com