【问题标题】:AngularJS - How to transclude into a script element?AngularJS - 如何嵌入到脚本元素中?
【发布时间】:2014-04-06 07:33:12
【问题描述】:

See Plunker

我想将指令元素的内容转换为<script> 元素。

在以下指令中,当模板包含如下脚本标记时,嵌入不起作用:

app.directive('mdl', function(){
    return {
        restrict: 'EA'
        , replace: true
        , transclude: true
        , template: '<script id="modal.html" > <div ng-transclude> </div> </script>'
    }

})

指令被调用的地方如下:

<mdlbody>  <div>testing modal body</div>  </mdlbody>

生成的&lt;main&gt; 元素为空。但是,当 &lt;script&gt; 标记像这样从模板字符串中删除时,transclude 会按预期工作,

template: '<div ng-transclude> </div>'

template: &lt;div&gt; &lt;div ng-transclude&gt; &lt;/div&gt; &lt;div&gt;

只要模板字符串没有包含在 &lt;script&gt; 中,transclude 就可以工作。 当 ng-transclude 直接放在 &lt;script ng-transclude&gt; 上时,Transclude 也可以工作。但是我想在 &lt;script&gt; 元素内更深层次的嵌套中插入嵌入。

为什么会这样?如何让 transclude 使用模板字符串中的 &lt;script&gt; 元素? (以便指令的内容被嵌入到&lt;script&gt; 元素中)

P.S:为了进一步澄清,我试图将 嵌入 script 元素,因此最终结果应该是&lt;script&gt;&lt;main&gt; transcluded content&lt;/main&gt;&lt;/script&gt;不是&lt;main&gt; transcluded content&lt;/main&gt;)。

【问题讨论】:

  • 你有没有想过这个问题?我也有同样的问题!

标签: angularjs angularjs-directive


【解决方案1】:

如果你试图引用这个指令的模板,那么用 templateurl 替换模板,因为模板需要一些带有角度指令的 html 代码写这个:

app.directive('mdl', function(){
return {
    restrict: 'EA'
    , replace: true
    , transclude: true
    , templateUrl: 'modal'
}

})

并将下面的行放在 .htm 文件的末尾

<script type="text/ng-template" id="modal" > <main ng-transclude> </main> </script>

【讨论】:

  • 这并没有实现目标,即嵌入到
  • 请检查我忘记了 ng-transclude 属性...我已经编辑了它
  • 请再次阅读问题,我正在尝试将其嵌入到 SCRIPT 元素中,因此最终结果应该是 (而不是
    嵌入内容
    )感谢您对此的研究,但您的回答并未完成嵌入到脚本元素中,即使您刚刚进行了编辑。
  • 我在问题中添加了说明。
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
相关资源
最近更新 更多