Javascript 名为指令angularjs的变量
我希望找到一种实现变量指令的方法:Javascript 名为指令angularjs的变量,javascript,angularjs,angularjs-directive,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Ng Repeat,我希望找到一种实现变量指令的方法: .constant('BLADES', [ { "name":"static", "order":1, "image": "img/blade_images/widgets-01.png" }, { "name":"static", "order":2, "image":
.constant('BLADES', [
{
"name":"static",
"order":1,
"image": "img/blade_images/widgets-01.png"
},
{
"name":"static",
"order":2,
"image": "img/blade_images/widgets-01.png"
},
{
"name":"static",
"order":3,
"image": "img/blade_images/widgets-01.png"
}
])
使用上面从服务器数据填充的常量,我想定义要在页面上加载的指令
<div ng-repeat="blade in blades">
<{{name}}-directive image="{{image}}">
</{{name}}-directive>
</div>
然而,上述方法不起作用,有人有什么想法吗?你想做的是不可能的。指令名必须在编译开始时已解析。{{bindings}}的插值是作为编译过程的一部分完成的——在所有模板代码已经被读取并解析为指令名等之后
为了达到您的目标,您需要先对模板进行预处理,并让AngularJS仅在其包含已解析的指令时才对其进行编译。根据评论中的讨论,我给您提供了一个包装器指令的非常原始的示例,您必须重新编写以使其可用 包装器指令
<wrapper item="selected"></wrapper>
然后是包装纸
.directive('wraper', function ($compile) {
return {
restrict: 'E',
scope: {
item: "="
},
link: function (scope, element, attrs) {
var directive = item + '-directive';
var html = '<' + directive + '></' + directive + '>';
var e =$compile(html)(scope);
element.replaceWith(e);
}
};
});
我认为那是不可能的;有关类似的问题,请参阅。虽然不可能使用动态指令名,但您可以通过编写包装器指令来摆脱此限制,这将向DOM添加动态命名的指令。谢谢@harish包装器指令?这听起来很有趣,你知道或能想到一个我可能用来构建这个包装器指令的方法示例吗?答案有用吗?