我正在使用 AngularJS 构建仪表板,并且创建了一个“小部件”指令。问题是小部件可以是多种类型的小部件之一,我根据指令上的某个属性来改变它。这对于模板来说真的很容易,我可以从函数中的attributes
对象中获取属性link
,获取模板并编译它。
但是,对于控制器来说,它似乎更加困难(或者我只是想念它)。我到目前为止是这样的:
return ['$compile', '$http', function($compile, $http) {
var templateContent = '';
return {
restrict: 'A',
scope: {},
link: function($scope, element, attributes, controller) {
element.append($compile(templateContent)($scope));
...
}
};
}];
我正在寻找一种基于元素属性动态设置控制器的方法。这可能吗?我不想data-ng-controller
在元素上显式设置,因为我试图让 HTML 只包含它想要加载的小部件的类型(不必担心模板位置或控制器)。
理想情况下,它看起来像这样:
<div data-widget="typename">...</div>