问题标签 [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.
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 模板。
非常感谢您的建议。
javascript - 我将如何渲染通过 AngularJS 中的编译插入的 html 标签?
我正在创建一个允许用户创建预览 html 内容的 UI。
出于这个问题的目的,假设我有以下对象数组:
我创建了一个指令,该指令循环遍历对象以根据类型选择模板并使用 $compile 来呈现不同的模块。
最后,在我的 html 中
我遇到的问题是,当我在内容中有一个 html 元素时,例如<b>intro copy</b>
in modules[1].content
,该元素被呈现为一个字符串,而不是像预期的那样加粗文本。
javascript - AngularJS:在模板子元素上调用可选的嵌套指令
我正在尝试编写一个指令,该指令为表单中的字段发出所有 HTML - 包装 div、标签、输入等。对于某些字段,我想使用Angular UI Bootstrap 的“typeahead”指令。
我首先尝试在模板中使用 ng-attr-typeahead='{{myTypeahead}}'。我预计,在未设置“myTypeahead”的字段上,不会有“typeahead”属性的证据。相反,在指令处理期间,该属性以未定义的值出现在属性列表中,并且 typeahead 指令被调用并立即爆炸,因为它的输入未定义。
然后我尝试使用像这样的后编译函数:
这会将“typeahead”属性放在输入元素上,但不会调用 typeahead 指令。
我希望这可能是其他一些帖子的副本,但我没有搜索正确的词来找到它。
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
angularjs - 如何 $compile 角度模板以使其在具有别名的多个控制器中工作?
我有一个自定义指令,它只是将一个模板编译成另一个模板。
我像这样使用它:
因为我为控制器使用别名(使用角度 UI 路由器),所以任何模板中的所有模型都像:
如何使此指令在 CtrlAlias 更改的多个模板中工作?
我尝试更改 $compile(contents)(scope); 进入 $compile(contents)(scope.newCtrlAlias);
有任何想法吗?
javascript - 带有事件监听器的指令优先级
我有一个带有 2 个指令的输入元素:
-direc(优先级 1)-directive(
优先级 0)
即使direc应该先执行,指令也会先执行。
为什么?
这是一个片段来显示正在发生的事情
angularjs - Angular 复合(超级)指令不允许对组件(子)指令进行 2 路绑定
我需要创建一个包含单独的全功能指令的复合指令。我的一个组件指令向 dom 添加了一个元素,并且该元素绑定到组件指令控制器中的一个值。当复合指令在编译函数中添加组件指令时,它似乎可以工作,但在组件指令中具有 2 路绑定的部分似乎没有被编译,只是在屏幕。我意识到这有点令人费解,所以我包含了一个帮助澄清问题的方法。
angularjs - 将作用域函数传递给克隆(和编译)的角度指令
我有一个角度指令,它可以将父控制器函数作为属性。在 DOM 操作期间,这个 angular 指令被克隆、编译并放入 DOM 的开始部分。结果,传入的父控制器功能不再起作用,因为不再有父控制器。我怎么能解决这个问题?我可以在编译时将父控制器功能从原始控制器传递给克隆吗?我已经尝试过了,但它不起作用:
此 getBack() 函数用于克隆指令中。当它被激活时,它记录未定义。有什么提示吗?
javascript - 编译后多次触发 ng-click
我已经阅读了很多 SO 答案,但无法解决问题。
我有一个像Javascript function
这样的创建HTML
元素document.createElement(...)
这是该功能的一部分:
此函数在应用程序启动时调用并创建许多行,因此当页面加载时,该函数生成的 HTML 如下所示:(此示例代码经过简化以便更易于理解)
角控制器:
在创建所有元素后的函数结束时,我使用以下命令进行编译:
但是当我点击按钮时,“你好”被触发了很多次!
如果我在页面上有10 个元素并单击第一个元素会触发10 次,如果我单击第二个元素会触发9 次,依此类推..
我试图将ng-controller
声明移动到按钮内,button.setAttribute("ng-controller","ProjectController");
甚至在<body>
标签中,但我仍然得到相同的行为。
谢谢你的帮助
javascript - AngularJS:为什么当父级有 ngIf 指令时我不能向祖父级元素添加属性
我正在使用 vanilla AngularJS v1.4.5(无 jQuery),并希望我的自定义指令在编译时向其祖父元素添加一个属性。
在编译函数中,我可以使用两次获取祖父元素的方法和添加我的属性的方法来parent()
实现这一点。但是,如果父元素具有ngIf指令,则祖父元素不会获得该属性。element
attr()
这是我所知道的:
- 如果
ngIf
未在父元素上使用,则该属性将添加到祖父元素。 - 问题不应该与 相关
scope
,因为这是在编译阶段发生的,在作用域被链接到任何元素之前。 - 我的 compile 函数应该在 of 之前运行
ngIf
,它的优先级为600
(并且没有 compile function)。 ngIf
完全删除并重新创建 DOM 中的元素(连同其子元素),但这不应影响祖父元素或更改其属性。
如果父元素具有指令,谁能向我解释为什么我不能向指令的祖父元素添加属性ngIf
?