当前位置: 首页 > 面试题库 >

AngularJS-动态创建指定指令的元素

井通
2023-03-14
问题内容

我有这样的设置:

  • 控制c广播事件e
  • 指令d侦听e,然后e通过append将其写入DOM,并以此创建指定指令的新元素d2

IE浏览器: element.append('<directiveTwo ...>')

  • twoAngular从未调用过指令
  • 当我检查DOM(并调试)时,我看到Controller c和指令d正在执行其工作,并且有新的directiveTwo元素。

什么不见​​了?2动态创建这些元素后需要做什么来触发指令调用?


问题答案:

请参阅$compile。您可以类似于以下方式使用此服务:

var newDirective = angular.element('<div d2></div>');
element.append(newDirective);
$compile(newDirective)($scope);

这将执行新元素的编译和链接,并d2付诸行动。

但是,如果您可以某种方式根据其他内置指令(如ng-repeatng-include为您执行编译和链接)重写原始指令,则可能会发现它更简单,更合理。

如果您的指令足够简单,则可以在听到事件时按照添加到数组的方式进行操作,并指定一个模板,例如

<div ng-repeat="evt in recordedEvents">
    <div d2="evt"></div>
</div>


 类似资料:
  • 问题内容: 我创建了以下AngularJS指令来嵌入YouTube视频: 从模板调用它时,出现以下错误: 错误:[$ interpolate:noconcat]插值时出错:http : //www.youtube.com/embed/ {{code}}严格的上下文转义不允许在需要可信值时连接多个表达式的插值。参见http://docs.angularjs.org/api/ng。$ sce 我无法确

  • 问题内容: 我正在尝试根据范围值使用不同的模板进行指令。 这是我到目前为止所做的,我不知道为什么它不起作用http://jsbin.com/mibeyotu/1/edit HTML元素: 指示: 问题答案: 1)您正在将内容作为属性传递到html中。试试这个: 代替: 2)指令的数据部分正在被编译,因此您应该使用其他东西。代替数据类型,例如datan-type。 链接在这里: http://jsb

  • 问题内容: 如何使用动态模板创建指令? 这就是我现在所拥有的,它可以正确显示标签。但是,我不确定如何在模板上附加其他HTML。或将2个模板合并为1个。 问题答案: 有类似的需求。做这份工作。(不完全确定这是否是“ THE”方法,仍然可以通过角度进行工作) http://jsbin.com/ebuhuv/7/edit-我的探索测试。 需要注意的一件事(以我的示例为例),我的要求之一是,一旦单击“保存

  • 问题内容: 确实为此感到挣扎-尝试了我能想到的所有方法。希望有人可以提供帮助。 我有一条指令可以为我创建自定义控件的轮廓。定制控件的中心部分将由另一个动态生成的指令表示,该指令基于外部指令上的作用域变量的值。作用域变量包含内部指令的名称。我这样做是因为我的页面将包含多个动态生成的元素,这些元素均具有相同的布局,但内部内容不同。 即我的外部指令的示例: 设置为另一个指令的名称-在这种情况下。因此,我

  • 问题内容: 我正在尝试创建一个指令,该指令将创建与创建指令的元素具有相同ng-model的输入字段。 到目前为止,这是我想到的: 的HTML 的JavaScript 但是,我不确定这是处理这种情况的正确方法,并且存在一个错误,即我的控件未使用ng-model target字段的值初始化。 这是上面代码的简称:http ://plnkr.co/edit/IvrDbJ 处理此问题的正确方法是什么? 编

  • 问题内容: 所以我要创建一个简单的指令“ hover”,这是一个基本的导航菜单,当您将鼠标移到特定的aba上时,此aba会改变颜色。看我的脚本代码: 现在我的HTML: 这工作正常,但是当我以这种方式放置html时: 这是行不通的,我必须用“ hover”标签包裹我的“ li”才能完成这项工作(是的,我正在将strict属性更改为“ A”),为什么呢?还有另一个问题,用“ hover”标签包装我的