如何将指令名称传递给模板 - 角度.js
How to pass directive name to template - Angular.js
我有一个指令,可以创建一堆类似的小部件。 每个小部件都包含不同的指令。 这是我用来创建小部件的模板:
template: '<li><div {{widgetModel.directiveName}}></div></li>'
我希望协调变量和/或模板来声明需要使用的指令。 然后,模板将是:
template: '<li><div directive-name></div></li>'
然后我希望它充当属性名称为 directiveName
的普通指令。 当前代码不会发生这种情况,我不知道如何使其表现得像我需要的那样。 指令名称指令实际上可以是任何东西。
你可以在编译函数中做这些更改:
angular.module('myWidgets', [])
.directive('multiDirective', function() {
return {
restrict: 'E',
compile: function(element, attrs)
{
var htmlText = '<ul>' +
'<li ' + attrs.directiveName + '>' + '</li>' +
'</ul>';
element.replaceWith(htmlText);
}
}
})
然后你可以这样称呼它:
<multi-directive directive-name='widget1' />
我根据 Angular 动态模板博客文章中的提示制作了一个 CodePen 示例,我在另一篇文章中看到了这一点。
为了拥有如下所示的 HTML:
<div ng-controller="ExampleCtrl">
<div ng-repeat="dir in dirs">
<div smart />
</div>
</div>
假设您的控制器看起来像这样:
function ExampleCtrl($scope) {
$scope.dirs = ["<div dir-a />","<div dir-b />"];
}
smart
指令可能如下所示:
.directive('smart', function($compile) {
return {
restrict: 'AE',
link: function (scope, element) {
element.html(scope.dir);
$compile(element.contents())(scope);
}
};
});
相关文章:
- 角度 JS + 重定向不起作用
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 角度Js ng-disabled不起作用
- "未捕获的语法错误:意外的标记"角度JS
- 角度范围$watch()等效于Rivets.js
- 用有角度的js打字
- 如何从角度 js 调用 javascript 方法
- 角度.js格式化 json 数据
- 将普通js转换为角度语法的快速方法
- 如何在角度js的自动完成下拉列表中对项目列表(按字母顺序)进行排序
- 角度JS拼接不工作
- 角度js中无动作
- 基于输入框的角度JS计算
- 带角度的js花括号显示为文本
- 角度 JS - 显示/隐藏动态表的一些行
- 角度 js - 如何用鼠标单击,然后在 ng-grid 上按 Enter 键
- 在角度 JS 中打开特定列表
- js角度按钮保持循环失败
- 禁用除单击之外的所有锤.js(角度锤子)事件
- 角度 JS |角度验证匹配密码