Javascript 带模态的ng模板内的角度指令

Javascript 带模态的ng模板内的角度指令,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我对angular处理预加载指令的方式很好奇,因为我对驻留在标记和ng模板中的指令有问题 当我在chromedev工具中暂停执行时,在初始文档加载期间,我可以清楚地看到,如果我的指令位于某个任意模板中,指令控制器中的代码不会被调用。以下是示例代码,例如,当index.html中包含myDirective作为myModule.js模块的一部分,同时也包含在index和主应用程序模块中时: 这是另一个指令的html,其中包含有问题的myDirective <script type="text/

我对angular处理预加载指令的方式很好奇,因为我对驻留在
标记和ng模板中的指令有问题

当我在chromedev工具中暂停执行时,在初始文档加载期间,我可以清楚地看到,如果我的指令位于某个任意模板中,指令控制器中的代码不会被调用。以下是示例代码,例如,当index.html中包含myDirective作为myModule.js模块的一部分,同时也包含在index和主应用程序模块中时:

这是另一个指令的html,其中包含有问题的myDirective

<script type="text/ng-template" id="callThis">
  <myDirective></myDirective>
</script>`
它无法运行该指令,因为它没有任何html可处理(这就是错误,关于某些html元素丢失)

最后,这里是保存myDirective的模块的代码

<script type="text/ng-template" id="callThis">
  <myDirective></myDirective>
</script>`
angular.module('myModule',['myDirectiveTemplates','myDirectiveDirective']))
angular.module('myDirectiveTemplates',[])。运行([“$templateCache”,函数($templateCache){$templateCache.put('myDirectiveTemplate.html',”“;}]);
angular.module('myDirectiveDirective',[])。directive('myDirective',function($window,$templateCache){
返回{
限制:'E',
模板:$templateCache.get('myDirectiveTemplate.html'),
控制器:功能($scope){
//一些任意代码
}
};
})

有趣的是,如果我把
放在index.html文件中,它就可以正常工作,并且启动时会加载控制器中的代码。我不确定如何解决这个问题。

根据我对这个问题的理解,您需要使用$compile服务。这里有一个教程可能会有帮助:$compile

本教程中给出的原因是:

“新制作的模板没有赋予AngularJS权限 然而,这就是我们使用$compile服务的地方……”

并引用了以下文件:

将一段HTML字符串或DOM编译为模板并生成 模板函数,然后可用于链接作用域和 模板在一起

下面是一个简短的代码示例,如教程所示:

app.directive('contentItem', function ($compile) {
    /* EDITED FOR BREVITY */

    var linker = function(scope, element, attrs) {
        scope.rootDirectory = 'images/';

        element.html(getTemplate(scope.content.content_type)).show();

        $compile(element.contents())(scope);
    }

    /* EDITED FOR BREVITY */
});

我也有同样的困难。你设法解决了吗?
app.directive('contentItem', function ($compile) {
    /* EDITED FOR BREVITY */

    var linker = function(scope, element, attrs) {
        scope.rootDirectory = 'images/';

        element.html(getTemplate(scope.content.content_type)).show();

        $compile(element.contents())(scope);
    }

    /* EDITED FOR BREVITY */
});