将范围传递给element.after()

时间:2015-06-23 08:31:13

标签: angularjs angularjs-directive

以下内容在我的HTML中调用:

<input data-autocomplete>

存在解析错误(基本HTML错误),因为在运行data-autocomplete时,它会在其HTML中调用另一个指令:data-autocomplete-results。当运行/编译它时,它会在<input>元素内部创建一个div,因为这是坏HTML,这意味着尽管它在源中,它也不会显示。

解决方案是我在<inupt>元素内部的指令编译的下面示例。

compile: function(element) {
    element.after('<div data-autocomplete-results></div>');
}

然而,unlicke element.appendelement.after没有通过范围,实际上,我认为是一个静态的HTML。该指令在附加的div中调用,但当然,那些依赖于范围的东西不起作用。

有没有办法将范围传递给此element.after

1 个答案:

答案 0 :(得分:1)

您可以尝试创建一个角度元素,并根据您希望它与$ compile

的范围进行编译

e.g。

var newElement = angular.element('<div data-autocomplete-results></div>');
element.after($compile(newElement)(scope));

此外,您需要在链接功能中执行此操作,因为在摘要周期的编译阶段,范围不可用。