Why is angular.js not smart enough to compile DOM when adding dynamic elements?(为什么 angular.js 在添加动态元素时不够聪明,无法编译 DOM?)
问题描述
我真的很喜欢 AngularJS 如何通过允许您在应用程序中声明指令来启用自定义标签/元素,但是,当我动态附加自定义标签时,什么也没有发生:
I really like how AngularJS enables custom tags/elements by allowing you to declare directives inside your app, however, when I append a custom tag dynamically, nothing happens:
angular.module('myApp', []).directive('test', (($compile) ->
restrict: 'E'
link: (scope, element, attributes) ->
$(element).html('<h1>this is a test!</h1>')
))
$('body').append('<test></test>')
如何动态构建自定义标签的实例?
How can I build an instance of my custom tag dynamically?
推荐答案
为什么要在 Angular 之外调用 jquery?例如,通常你会从一个角度指令内部做一些事情,并且可以访问 $compile.如果您绝对需要外部访问,您可以创建一个注入器.(PLUNKER)
Why are you calling jquery outside of angular? Normally you would do something from inside an angular directive for instance and that would have access to $compile. If you absolutely need access outside you can create an injector. (PLUNKER)
angular.module('myApp', []).directive('test', function($compile) {
return {
restrict: 'E',
link: function(scope, element, attributes) {
$(element).html('<h1>this is a test!</h1>')
}
}
});
///////////////////////////////////////////////////////////////////////////////
// called outside angular, you can create an injector that knows about
// certain modules
///////////////////////////////////////////////////////////////////////////////
$(function() {
// myApp for test directive to work, ng for $compile
var $injector = angular.injector(['ng', 'myApp']);
$injector.invoke(function($rootScope, $compile) {
$('body').prepend($compile('<test>Inside injector</test>')($rootScope));
});
});
这篇关于为什么 angular.js 在添加动态元素时不够聪明,无法编译 DOM?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么 angular.js 在添加动态元素时不够聪明,无法编译 DOM?
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Fetch API 如何获取响应体? 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 400或500级别的HTTP响应 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01