如何在AngularJS中以编程方式计算HTML元素(指令)的属性名
How to programmatically compute the attribute names of HTML elements (directives) in AngularJS?
我在AngularJS中定义了这些属性限制指令:
<div data-pie-chart data="..."></div>
<div data-line-chart data="..."></div>
<div data-column-chart data="..."></div>
呈现页面时,我以JSON格式从服务器加载图表列表,例如:
[ { chartType: "pie", data: [ 1, 1, 1, 1, 1 ] },
{ chartType: "pie", data: [ 2, 2, 2, 2, 2 ] },
{ chartType: "pie", data: [ 3, 3, 3, 3, 3 ] },
{ chartType: "column", data: [ 4, 4, 4, 4, 4 ] },
{ chartType: "column", data: [ 5, 5, 5, 5, 5 ] } ]
我想使用ng-repeat(或类似)来生成以下代码:
<div data-pie-chart data="[1,1,1,1,1]"></div>
<div data-pie-chart data="[2,2,2,2,2]"></div>
<div data-pie-chart data="[3,3,3,3,3]"></div>
<div data-column-chart data="[4,4,4,4,4]"></div>
<div data-column-chart data="[5,5,5,5,5]"></div>
我希望有一个优雅的"angularish"代码,能够做到这一点,理想情况下不需要利用"ng-switch"或"ng-if",因为图表列表不受限制,一开始不知道(新类型的图表可以随时添加)。
我可以计算出属性的名称吗?这样我就不用硬编码了?
我使用外部指令和内部模板做了类似的事情。一旦类型已知,外部指令负责编译内部图表指令。
包装指令
.directive( 'chartWrapper', [ '$compile', function($compile){
return {
scope: { data: '=', type: '=' },
link: function($scope, elem, attrs){
var dom = '<div ' + $scope.type + ' data="' + $scope.data + '"/>'
var el = angular.element(dom)
$compile(el)($scope)
elem.append(el)
}
}
}])
我还没有测试过这个,因为它和我自己的情况有点不同,但应该让你开始。
相关文章:
- 指令的模板必须只有一个根元素:With restrict E&替换true
- AngularJS指令,在元素后插入HTML
- AngularJS-将点击事件绑定到指令元素的子元素
- 离子指令元素不调用函数(绑定)更改
- 指令元素未显示
- 访问链接函数内的当前自定义指令元素
- 将指令属性添加到指令元素
- 将更新绑定到链接中的指令元素,而不是内联
. - AngularJs 指令元素子元素给出空
- AngularJS,指令元素为空
- 通过父控制器 AngularJS 设置指令元素属性
- AngularJS:如何判断我的控制器是否绑定到我的ng-repeat指令元素?我的数据没有显示
- JqueryDatePicker角度指令元素不工作
- 如何在现有的父指令元素和子指令元素之间动态嵌套指令元素
- Angular指令元素
- Angular指令-如何使用JQuery将ngModel和ngBind添加到自定义指令元素中
- 从控制器访问指令元素
- 如何从指令元素中删除角度观察者
- AngularJS子指令元素选择
- Angular.js指令元素的默认值