在使用require
加载库时,当未通过第一个请求加载内容时,在加载库后,不会延迟javascript代码的执行。
wApp->require("myLibrary.js"); // defines function MyFunction ();
doJavaScript ("MyFunction ();");
此代码在第一个加载的页面上被请求时运行,但没有错误,但是在单击按钮后加载内容时,发生以下javascript错误:
未定义MyFunction
我应该如何克服这个问题?
进一步的研究
检查WebRenderer::collectJS
的源代码:
似乎在加载新库之前执行了Javascript更新:
// Executing javascript updates, including doJavaScript calls.
for (unsigned i = 0; i < changes.size(); ++i) {
changes[i]->asJavaScript(sout, DomElement::Priority::Update);
delete changes[i];
}
...
// Loading new libraries.
int librariesLoaded = loadScriptLibraries(*js, app);
在加载新库之前,是否应该延迟javascript更新?
答案 0 :(得分:0)
我不确定javascript scriploader的行为。但是根据我的wt经验,我以这种方式添加它。
1)我的javascript库从require开头加载到我的主页中。
2)如果以后需要一些新功能,可以将其写在我的脚本字符串中:
<div class="container">
<div class="row">
<div class="col-md-2">
APP ICON 1
</div>
<div class="col-md-2">
APP ICON 2
</div>
<div class="col-md-2">
APP ICON 3
</div>
<div class="col-md-2">
APP ICON 4
</div>
<div class="col-md-2">
APP ICON 5
</div>
<div class="col-md-2">
APP ICON 6
</div>
</div> <!-- End of Row 1 -->
<div class="row">
<div class="col-md-2">
APP ICON 1
</div>
<div class="col-md-2">
APP ICON 2
</div>
<div class="col-md-2">
APP ICON 3
</div>
<div class="col-md-2">
APP ICON 4
</div>
<div class="col-md-2">
APP ICON 5
</div>
<div class="col-md-2">
APP ICON 6
</div>
</div> <!-- End of Row 2 -->
</div>
答案 1 :(得分:0)
如果要加载一些javascript文件并在加载后运行某些功能,则应在容器类的构造函数中进行要求。
然后您派生了函数bool Wt :: WCompositeWidget :: loaded()
并在此函数中添加您的dojavaScript ...