问题标签 [angularjs-compile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2030 浏览

angularjs - AngularJS:无法将属性从第一个指令插入到第二个。(w / plunker示例)

参考

参考plunker:http ://plnkr.co/edit/otv5mVVQ36iPi3Mp0FYw?p=preview

问题说明

假设我们有两个指令,first-directive并且second-directive. 现在假设我们只能访问first-directive我们希望包装second-directive的对象,并将我们自己的操作属性传递给它。

first-directive被称为如下:

console.log 输出如下:

所以从这里我了解到模板是在编译之前调用的。这在我的新手眼中很奇怪,因为无论如何都无法通过编译、控制器、前置或后置链接来操纵模板函数传回的值!

问题是这样的:

如何second-directive使用我想要的动态属性值调用 ?请记住,这second-directive是完全独立的,我们不能在那里添加代码。

PS - 我有一个可能的想法是调用第二个指令如下:

或者

然而,再一次,我不确定如何在调用任何其他函数之前将值传递给第一指令。控制器可以访问 $scope,它被称为 AFTER 模板。

非常感谢您的建议。

0 投票
1 回答
868 浏览

javascript - 我将如何渲染通过 AngularJS 中的编译插入的 html 标签?

我正在创建一个允许用户创建预览 html 内容的 UI。

出于这个问题的目的,假设我有以下对象数组:

我创建了一个指令,该指令循环遍历对象以根据类型选择模板并使用 $compile 来呈现不同的模块。

最后,在我的 html 中

我遇到的问题是,当我在内容中有一个 html 元素时,例如<b>intro copy</b>in modules[1].content,该元素被呈现为一个字符串,而不是像预期的那样加粗文本。

0 投票
1 回答
179 浏览

javascript - AngularJS:在模板子元素上调用可选的嵌套指令

我正在尝试编写一个指令,该指令为表单中的字段发出所有 HTML - 包装 div、标签、输入等。对于某些字段,我想使用Angular UI Bootstrap 的“typeahead”指令

我首先尝试在模板中使用 ng-attr-typeahead='{{myTypeahead}}'。我预计,在未设置“myTypeahead”的字段上,不会有“typeahead”属性的证据。相反,在指令处理期间,该属性以未定义的值出现在属性列表中,并且 typeahead 指令被调用并立即爆炸,因为它的输入未定义。

然后我尝试使用像这样的后编译函数:

这会将“typeahead”属性放在输入元素上,但不会调用 typeahead 指令。

我希望这可能是其他一些帖子的副本,但我没有搜索正确的词来找到它。

0 投票
1 回答
142 浏览

javascript - 当我单击谷歌地图中的箭头图标时,谷歌地图 [$parse:syntax] 错误?

当我单击图标时,我在控制台中出现这样的错误

错误:[$parse:syntax] 语法错误:令牌 'b24782c7d354f30cda0e89' 是意外的,在表达式 [navigate(55b24782c7d354f30cda0e89)] 的第 12 列期望 [)] 从 [b24782c7d354f30cda0e89)] 开始。 http://errors.angularjs.org/1.3.13/ $parse/syntax?p0=b24782c7d354f30cda0e89&p1=is%20unexpected%2C%20expecting%20%5B)%5D&p2=12&p3=navigate(55b24782c7d354f30cda0e89)&p4=b24782c7d354f30cda0e89) at REGEX_STRING_REGEXP ( http://localhost:8100/bower_components/angular/angular.js:63:12 ) 在 Parser.throwError ( http://localhost:8100/bower_components/angular/angular.js:12011:11 ) 在 Parser.consume ( http://localhost:8100/bower_components/angular/angular.js:12053:12 ) 在 Parser.functionCall (http://localhost:8100/bower_components/angular/angular.js:12323:10 ) 在 Parser.primary ( http://localhost:8100/bower_components/angular/angular.js:11995:24 ) 在 Parser.unary ( http://localhost:8100/bower_components/angular/angular.js:12271:19 ) 在 Parser.multiplicative ( http://localhost:8100/bower_components/angular/angular.js:12254:21 ) 在 Parser.additive ( http://localhost:8100/bower_components/angular/angular.js:12245:21 ) 在 Parser.relational ( http://localhost:8100/bower_components/angular/angular.js:12236:21 ) 在 Parser.equality ( http://localhost:8100/bower_components/angular/angular.js:12227:21) (匿名函数)@ angular.js:11607$get @ angular.js:8557invokeLinkFn @ angular.js:8221nodeLinkFn @ angular.js:7729compositeLinkFn @ angular.js:7078publicLinkFn @ angular.js:6957(匿名函数)@控制器。 js:630S.trigger@main.js:20(匿名函数)@VM11388:37(匿名函数)@VM11381:10L.ff@VM11381:195L.Dk@VM11381:195S.trigger@main.js:20eb@main. js:22S.trigger@main.js:20L.Sk@VM11381:65(匿名函数)@main.js:21

0 投票
2 回答
1784 浏览

angularjs - 如何 $compile 角度模板以使其在具有别名的多个控制器中工作?

我有一个自定义指令,它只是将一个模板编译成另一个模板。

我像这样使用它:

因为我为控制器使用别名(使用角度 UI 路由器),所以任何模板中的所有模型都像:

如何使此指令在 CtrlAlias 更改的多个模板中工作?

我尝试更改 $compile(contents)(scope); 进入 $compile(contents)(scope.newCtrlAlias);

有任何想法吗?

0 投票
2 回答
665 浏览

javascript - 带有事件监听器的指令优先级

我有一个带有 2 个指令的输入元素:
-direc(优先级 1)-directive(
优先级 0)

即使direc应该先执行,指令也会先执行。
为什么?

这是一个片段来显示正在发生的事情

0 投票
1 回答
332 浏览

angularjs - Angular 复合(超级)指令不允许对组件(子)指令进行 2 路绑定

我需要创建一个包含单独的全功能指令的复合指令。我的一个组件指令向 dom 添加了一个元素,并且该元素绑定到组件指令控制器中的一个值。当复合指令在编译函数中添加组件指令时,它似乎可以工作,但在组件指令中具有 2 路绑定的部分似乎没有被编译,只是在屏幕。我意识到这有点令人费解,所以我包含了一个帮助澄清问题的方法。

http://plnkr.co/edit/alO83j9Efz62VTKDOVgc

0 投票
1 回答
252 浏览

angularjs - 将作用域函数传递给克隆(和编译)的角度指令

我有一个角度指令,它可以将父控制器函数作为属性。在 DOM 操作期间,这个 angular 指令被克隆、编译并放入 DOM 的开始部分。结果,传入的父控制器功能不再起作用,因为不再有父控制器。我怎么能解决这个问题?我可以在编译时将父控制器功能从原始控制器传递给克隆吗?我已经尝试过了,但它不起作用:

此 getBack() 函数用于克隆指令中。当它被激活时,它记录未定义。有什么提示吗?

0 投票
1 回答
2377 浏览

javascript - 编译后多次触发 ng-click

我已经阅读了很多 SO 答案,但无法解决问题。

我有一个像Javascript function这样的创建HTML元素document.createElement(...)

这是该功能的一部分:

此函数在应用程序启动时调用并创建许多行,因此当页面加载时,该函数生成的 HTML 如下所示:(此示例代码经过简化以便更易于理解

角控制器:

在创建所有元素后的函数结束时,我使用以下命令进行编译:

但是当我点击按钮时,“你好”被触发了很多次!

如果我在页面上有10 个元素并单击第一个元素会触发10 次,如果我单击第二个元素会触发9 次,依此类推..

我试图将ng-controller声明移动到按钮内,button.setAttribute("ng-controller","ProjectController");甚至在<body>标签中,但我仍然得到相同的行为。

谢谢你的帮助

0 投票
2 回答
995 浏览

javascript - AngularJS:为什么当父级有 ngIf 指令时我不能向祖父级元素添加属性

我正在使用 vanilla AngularJS v1.4.5(无 jQuery),并希望我的自定义指令在编译时向其祖父元素添加一个属性。

在编译函数中,我可以使用两次获取祖父元素的方法和添加我的属性的方法来parent()实现这一点。但是,如果元素具有ngIf指令,则祖父元素不会获得该属性。elementattr()

JSFiddle

这是我所知道的:

  • 如果ngIf未在父元素上使用,则该属性将添加到祖父元素。
  • 问题不应该与 相关scope,因为这是在编译阶段发生的,在作用域被链接到任何元素之前。
  • 我的 compile 函数应该在 of 之前运行ngIf,它的优先级为600(并且没有 compile function)。
  • ngIf完全删除并重新创建 DOM 中的元素(连同其子元素),但这不应影响祖父元素或更改其属性。

如果父元素具有指令,谁能向我解释为什么我不能向指令的祖父元素添加属性ngIf