Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 名为指令angularjs的变量_Javascript_Angularjs_Angularjs Directive_Angularjs Ng Repeat - Fatal编程技术网

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包装器指令?这听起来很有趣,你知道或能想到一个我可能用来构建这个包装器指令的方法示例吗?答案有用吗?