在我的 .xsl 文件中,我有以下代码:
importantMsg = null;
<script type="text/javascript">
$.getScript("std/lamFile.js").done(function(script, successOrFail, exept) {
importantMsg = getMessage();
});
</script>
isoNS.PanelQ<xsl:value-of select="@CHECKID"/>Pensl = new Ext.Panel
({<xsl:if test="@CHECKID=9051">
items: [
{
xtype: 'label',
id: 'attentionLabel',
width: 200,
style: 'margin: 100px 0px 0px 24%;',
text: importantMsg <---------------- variable goes Here
}
]
</xsl:if>
});
我加载一个js文件,然后调用getMessage
方法,该方法返回一个字符串。正如您在代码中看到的那样,我将这个字符串称为 importantMsg。现在我想在 extjs 代码中使用这个字符串,其中有标签 xtype。但这里并没有设置 importantMsg,它只是未定义。所以我想我应该使用 xsl 来获取它?我怎样才能做到这一点?
奇怪的是,如果我在创建 Ext.Panel 之前编写 alert("");
,那么 importantMsg 将被插入。
非常感谢任何帮助
最佳答案
我认为这与 XSLT 没有任何关系。 XSLT 正在生成 javascript 文本,但是当 javascript 运行时,XSLT 早已被遗忘。他们之间没有互动。
我猜问题是 jquery 函数 $.getScript
函数是异步的,当前用于查看 new Ext.Panel
的代码在 之前运行>$.getScript
完成。 (有了警报,这确实允许 $.getScript
完成,因此它似乎可以工作)。
解决方案可能是重新排序语句,因此通过$.getScript
的回调函数来设置text
属性。
类似这样的事情...
importantMsg = null;
isoNS.PanelQ<xsl:value-of select="@CHECKID"/>Pensl = new Ext.Panel
({<xsl:if test="@CHECKID=9051">
items: [
{
xtype: 'label',
id: 'attentionLabel',
width: 200,
style: 'margin: 100px 0px 0px 24%;',
text: importantMsg <---------------- variable goes Here
}
]
</xsl:if>
});
<script type="text/javascript">
$.getScript("std/lamFile.js").done(function(script, successOrFail, exept) {
importantMsg = getMessage();
<xsl:if test="@CHECKID=9051">
isoNS.PanelQ<xsl:value-of select="@CHECKID"/>Pensl.items[0].text = importantMsg;
</xsl:if>
});
</script>
关于javascript - 从 javascript 获取变量,并将其转换为 xsl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780119/