javascript - 在 Angular 中添加带有指令的元素

标签 javascript angularjs dom angularjs-directive

我在 Angular 中动态添加一个元素。代码如下。

myelement.after('<input ng-model="phone" id="phone">');

元素被添加并且一切正常。但是我认为我错过了一个步骤并且 Angular 无法识别新元素,因为当我稍后收集数据时,未定义动态添加的元素的值。

动态添加元素的原因是输入的数量从一开始就不知道,用户可以根据需要添加任意数量的输入。实际代码是这样的:

myelement.after('<input ng-model="phone"' + counter + ' id="phone' + counter + '">');

对不起,我应该从一开始就提供完整的样本。请查看以下 jsfiddle,添加一些电话(带有值)并列出它们:http://jsfiddle.net/kn47mLn6/4/

请注意,我没有创建任何新指令。我只使用 Angular 标准指令,我不想为这项工作创建自定义指令(除非需要)。

最佳答案

假设您要使用指令向 DOM 添加元素。您可以使用内置的 Angular 服务 $compile。 首先将 $compile 服务注入(inject)你的指令。然后在指令的链接函数中,获取要在其后附加元素的 myElement。然后使用 angular.element() 创建你的元素。然后使用 $compile 服务编译它并传递你现在所在的范围。(这里这个范围是指令范围)。获得编译后的 dom 元素后,您可以将其附加到您的 myElement 之后。

这是一个关于如何从指令动态添加元素的例子:

var elementToBeAdded = angular.element('<input ng-model="phone" id="phone">');
elementToBeAddedCompiled = $compile(elementToBeAdded)(scope);
myElement.append(elementToBeAddedCompiled);

如果您在指令中使用 $compile 服务添加元素,angular 将识别您动态添加的元素。

关于javascript - 在 Angular 中添加带有指令的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419610/

相关文章:

javascript - typescript 中基于两个值的数组迭代

javascript - 如何使用指令将元标记插入头部

javascript - 如何自动选择html中的某些代码?

JAVA Ignore 注释掉 xml 标签

javascript - JS : from RGB Blue to RGB Red

javascript - javascript 中的三种 map 实现。哪一个更好?

javascript - 如何检查 Istanbul 尔单个文件的覆盖范围?

angularjs - 如何将列右对齐?

javascript - 如何在 Angular 网络应用程序上实现 Angular 游览

javascript - HTML 修改 JavaScript 代码表示我的 HTML 元素未定义