在指令中动态添加模板
Adding template dynamically in directive
我正在尝试在我的角度指令中动态添加一个模板。我使用链接函数将变量编译为html元素,如本答案所示。
但我无法让它工作。
这是我的 html:
<spinners></spinners>
这是我的指令:
app.directive('spinners', function() {
return {
restrict: 'E',
link: function(scope, element, attrs) {
var spinkit = ["<rotating-plane-spinner></rotating-plane-spinner>", "<double-bounce-spinner></double-bounce-spinner>", "<wave-spinner></wave-spinner>", "<wandering-cubes-spinner></wandering-cubes-spinner>", "<pulse-spinner></pulse-spinner>", "<chasing-dots-spinner></chasing-dots-spinner>", "<circle-spinner></circle-spinner>", "<three-bounce-spinner></three-bounce-spinner>", "<cube-grid-spinner></cube-grid-spinner>", "<word-press-spinner></word-press-spinner>", "<fading-circle-spinner></fading-circle-spinner>"];
var spinner = spinkit[Math.floor(Math.random() * spinkit.length)];
var el = angular.element(spinner);
compile(el.contents())(scope);
element.replaceWith(el);
}
};
});
实际上,我正在使用Angular-SpinKit在我的加载页面中随机显示微调器。当我直接使用旋转套件的单个指令时,它可以工作。但是当我使用上述方法时,我在 html 页面中找不到任何内容。
看起来问题出在这一行compile(el.contents())(scope);
compile
应该是$compile
的,它是一个服务,应该注入到指令中。
所以:$compile(el.contents())(scope);
和app.directive('spinners', function($compile) {
app.directive('spinners', function($compile) {
return {
restrict: 'E',
link: function(scope, element, attrs) {
var spinkit = ["<rotating-plane-spinner></rotating-plane-spinner>", "<double-bounce-spinner></double-bounce-spinner>", "<wave-spinner></wave-spinner>", "<wandering-cubes-spinner></wandering-cubes-spinner>", "<pulse-spinner></pulse-spinner>", "<chasing-dots-spinner></chasing-dots-spinner>", "<circle-spinner></circle-spinner>", "<three-bounce-spinner></three-bounce-spinner>", "<cube-grid-spinner></cube-grid-spinner>", "<word-press-spinner></word-press-spinner>", "<fading-circle-spinner></fading-circle-spinner>"];
var spinner = spinkit[Math.floor(Math.random() * spinkit.length)];
var el = angular.element(spinner);
$compile(el.contents())(scope);
element.replaceWith(el);
}
};
});
试试这个:
app.directive('spinners', function($compile) {
return {
restrict: 'E',
link: function(scope, element, attrs) {
var spinkit = ["<rotating-plane-spinner></rotating-plane-spinner>", "<double-bounce-spinner></double-bounce-spinner>", "<wave-spinner></wave-spinner>", "<wandering-cubes-spinner></wandering-cubes-spinner>", "<pulse-spinner></pulse-spinner>", "<chasing-dots-spinner></chasing-dots-spinner>", "<circle-spinner></circle-spinner>", "<three-bounce-spinner></three-bounce-spinner>", "<cube-grid-spinner></cube-grid-spinner>", "<word-press-spinner></word-press-spinner>", "<fading-circle-spinner></fading-circle-spinner>"];
var spinner = spinkit[Math.floor(Math.random() * spinkit.length)];
var el = angular.element(spinner);
element.replaceWith(el);
$compile(el)(scope);
}
};
});
相关文章:
- 正在添加动态第二类Jquery
- 如何在javascript而不是jquery中添加动态列表
- 为图例添加动态色彩标签
- 如何在谷歌表单中添加动态字段
- 如何添加动态Id's并在运行时提取它们
- 在 JavaScript 中添加动态文本
- 如何添加动态表单元素但保留其值(JS)
- 使用AngularJs在自定义TinyMCE编辑器中添加动态数据
- 如何使用JavaScript添加动态HTML内容(DIV)
- javascript初学者:在javascript中添加动态样式
- 如何使用Javascript在html源中添加动态数据
- 向Uploadify添加动态字段
- 如何在 Vue.js 中添加动态组件/部件
- 锚导航与坚持到顶部菜单..需要向锚点添加动态偏移量
- Javascript:添加动态方法
- 向角度对象添加动态功能
- 添加动态文本框时更新动态高度
- JavaScript 运行时错误:无法在 Windows 8 应用中添加动态内容
- 添加动态点击事件
- 添加动态字段以创建特定的 JSON 格式