gpt4 book ai didi

AngularJS - 将元素附加到指令内的每个 ng-repeat 迭代

转载 作者:行者123 更新时间:2023-12-01 07:40:44 27 4
gpt4 key购买 nike

我在 <tr> 中使用了 ng-repeat元素与指令一起。

html:

<tbody>
<tr ng-repeat="row in rows" create-table>
<td nowrap ng-repeat="value in row | reduceString>{{value}}</td>
</tr>
</tbody>

指示:
app.directive('createTable', function () {
return {

link: function (scope, element, attrs) {
var contentTr = scope.$eval('"<tr ng-show=&quot;false&quot;><td>test</td></tr>"');
$(contentTr).insertBefore(element);
}
}
}
);

虽然我可以追加一个新的 <tr>每次迭代的元素,在将其添加到 DOM 后,我无法执行 Angular 代码(例如 <tr> 中的 ng-show )。我错过了一些明显的东西吗?

最佳答案

您没有在 child 体内获得 Angular 绑定(bind)的原因是因为 你缺compiling .当链接函数运行时,元素已经被编译,因此,Angular 增强了。你所要做的就是$compile手工制作您的内容。首先,不要评估您的模板,否则您将丢失绑定(bind)提示。

app.directive('createTable', function ($compile) {
return {
link: function (scope, element, attrs) {
var contentTr = angular.element('<tr ng-show=&quot;false&quot;><td>test</td></tr>');
contentTr.insertBefore(element);
$compile(contentTr)(scope);
}
}
});

另一个提示 : 你永远不会在 jQuery ($) 中包含你的元素。如果您的页面中有 jQuery,那么所有 Angular 元素都已经是 jQuery 增强元素。

最后,解决您需要的正确方法是使用指令 compile函数(读取 'Compilation process, and directive matching' and 'Compile function')在编译之前修改元素。

作为最后的努力,阅读整个 Directive guide ,这是宝贵的资源。

关于AngularJS - 将元素附加到指令内的每个 ng-repeat 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15728521/

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