Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 不执行动态创建的指令_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 不执行动态创建的指令

Angularjs 不执行动态创建的指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,Plnkr样本:[ 这可能不是正确的“角度”实现这一点的方法,但不幸的是,我正在使用一些我更改能力有限的第三方库。我正在尝试动态创建一个Angle指令并将其添加到页面中。该过程是有效的,至少在将directive元素添加到DOM的意义上是有效的,但实际上它并没有执行-它只是一个dumb在这一点上 相关代码如下: <div ng-app="myModule"> <div dr-test="Static Test Works"><

Plnkr样本:[

这可能不是正确的“角度”实现这一点的方法,但不幸的是,我正在使用一些我更改能力有限的第三方库。我正在尝试动态创建一个Angle指令并将其添加到页面中。该过程是有效的,至少在将directive元素添加到DOM的意义上是有效的,但实际上它并没有执行-它只是一个dumb在这一点上

相关代码如下:

<div ng-app="myModule">
    <div dr-test="Static Test Works"></div>
    <div id="holder"></div>
    <a href="#" onclick="addDirective('Dynamic test works')">Add Directive</a>
</div>
var myModule = angular.module('myModule', []);
myModule.directive('drTest', function () {
    console.log("Directive factory was executed");
        return {
            restrict: 'A',
            replace: true,
            link: function postLink(scope, element, attrs) {
                console.log("Directive was linked");
                $(element).html(attrs.drTest);
            }
        }
});
function addDirective(text){
    console.log("Dynamically adding directive");
    angular.injector(['ng']).invoke(['$compile', '$rootScope',function(compile, rootScope){
        var scope = rootScope.$new();
        var result = compile("<div dr-test='"+text+"'></div>")(scope);
        scope.$digest();
        angular.element(document.getElementById("holder")).append(result);       
}]);
}
&lt;/script&gt;
div ng app=“myModule”
div dr test=“静态测试工作”>/div
div id=“持有人”>/div
a href=“#”onclick=“addDirective('Dynamic test works')”添加指令/a
/div
var myModule=angular.module('myModule',[]);
myModule.directive('drTest',function(){
log(“执行了指令工厂”);
返回{
限制:“A”,
替换:正确,
链接:函数postLink(范围、元素、属性){
log(“指令被链接”);
$(element.html(attrs.drTest);
}
}
});
函数addDirective(文本){
log(“动态添加指令”);
angular.injector(['ng'])。调用(['$compile','$rootScope',函数(compile,rootScope){
var scope=rootScope.$new();
var结果=编译(“”)(范围);
范围。$digest();
元素(document.getElementById(“holder”)).append(结果);
}]);
}
/剧本

在将指令附加到DOM时,您也需要在注入器中使用模块调用指令,因为指令
drTest
仅在您的模块下可用,因此在创建注入器时,除了添加
ng
之外,还需要添加模块。而且您实际上不需要执行范围应用,因为元素是alrea使用作用域进行编译。您还可以删除冗余的
$(元素)

angular.injector(['ng','myModule'])。调用(['$compile','$rootScope',函数(compile,rootScope){
var scope=rootScope.$new();
var结果=编译(“”)(范围);
元素(document.getElementById(“holder”)).append(结果);
}]);

完美!我知道我错过了什么(回想起来)。泰克斯
       angular.injector(['ng', 'myModule']).invoke(['$compile', '$rootScope',function(compile, rootScope){
          var scope = rootScope.$new();
          var result = compile("<div dr-test='"+text+"'></div>")(scope);
           angular.element(document.getElementById("holder")).append(result);
       }]);