【发布时间】:2018-10-24 13:51:23
【问题描述】:
我在 Angular 中有一个组件,其内容由提供 HTML 代码的后端提供。我将它作为内部 HTML 添加到组件中。提供的 HTML 中有一个和一个标记。但是,虽然我认为样式受到尊重,但我无法在脚本标签中调用该函数。
<script> 标签:
function ToggleDisplayMode(node)
{
var tableHeader = document.getElementById(node);
if (null != tableHeader)
{
var row = tableHeader.nextSibling;
while (row != null)
{
if ( row.style.display != "none" ) {
row.style.display = "none";
}
else {
row.style.display = "";
}
row = row.nextSibling;
}
}
}
我如何调用这个函数:
<a onclick="ToggleDisplayMode(<args>)"><u>show/hide</u></a>
点击不起作用,我在控制台中得到以下输出:
> Uncaught ReferenceError: ToggleDisplayMode is not defined
> at HTMLAnchorElement.onclick (<args>)
函数定义的很清楚,所以我不明白我在这里做错了什么。
我已经检查了几个关于这个问题的帖子,但它们是基于 JQuery 的。这是 Angular 如何处理内部 HTML 的问题吗?
编辑:
点击需要由 JavaScript 而不是 Angular 来处理(因为这个系统的特殊性),所以 ngClick 或 (click) 将不起作用。
编辑 2:
显然,innerHtml 中的<script> 标签不会根据this post 执行。届时将不得不找到另一种方法来做到这一点。
【问题讨论】:
-
您使用的是哪个版本的 Angular?
<args>这里是什么? -
这是一个设计怪癖,但是这个 HTML 是由我们拥有的 SDK 提供的,而 Angular 应用程序是在它之上构建的。相同的 HTML 用于许多其他客户端界面,因此我无法在那里进行更改。所以我不能使用
ngClick -
目前是Angular 4,而
基本上是HTML中的节点ID。见函数第二行的 var tableHeader = document.getElementById(node);。 -
如果您打开控制台并输入
ToggleDisplayMode,它会返回任何内容吗?如果不是,则ToggleDisplayMode不在全局范围内 -
听起来你的函数不在全局范围内。
标签: javascript html angular innerhtml