如何告诉 Javascript 方法等到绑定值后在 DotVVM 中执行?
How do I tell a Javascript method to wait until after binding values to execute in DotVVM?
我使用值绑定 (<dot:HtmlLiteral Html="{value: BannerHTML}" class="mainBanner"/>
) 根据许多变量生成我的一些页面内容。
我还需要在生成的 HTML 上 运行 一些 javascript 来修复一些小问题,例如为不寻常的缩放场景匹配字体大小等。作为标准,我将可执行文件 javascript 放在 HTML 文档的 end 处。
在以下情况之一中生成 HTML:
<div class="mainBanner" data-bind="html: BannerHTML">
<div class="mainBanner-upper">some text</div>
<div class="mainBanner-face" id="mainTitle">some other text</div>
<div class="mainBanner-lower">some more text</div>
</div>
JS 对其进行操作 HTML:
(需要 https://github.com/adactio/FitText.js)
window.fitText(document.getElementById("mainTitle"));
据我所知,javascript 在生成 HTML 之前执行,而 javascript 在元素 returns [=14= 上执行].我如何告诉它等待?我尝试将 javascript 文件绑定到资源,并在 body 元素末尾用 <script>
标记简单地将其写入但没有成功。
由于您的问题似乎与DOM相关,我可以向您推荐两种方法。
您的 javascript 必须检查并等待 DOM。我强烈建议您阅读这篇 answer to ...how to call a function when the page/DOM is ready...
绑定数据后动态添加脚本(我不太确定)
祝你好运。
编辑
所以我查看了 dotvvm 文档以查找事件调用并发现了一些有趣的东西:
每个 DotVVM 页面都包含 Dotvvm.js,它在全局范围内定义了 dotvvm。此对象可用于访问视图模型并对各种页面事件做出反应。
这允许您访问由 DOTVVM 触发的特定事件,您只需找到您需要的事件即可。我在下面为您提供了一个示例。
你可以尝试这样的事情(活动可能不是你需要的):
<script>
//By subscribing to the event, your code will only be executed
// if "init" event is fired by dotvvvm
dotvvm.events.init.subscribe(()=>{
window.fitText(document.getElementById("mainTitle"));
//basically enclose the content of your script tag with this.
});
</script>
请务必阅读文档,因为我可能遗漏了什么? DOTVVM Javascript Events
我使用值绑定 (<dot:HtmlLiteral Html="{value: BannerHTML}" class="mainBanner"/>
) 根据许多变量生成我的一些页面内容。
我还需要在生成的 HTML 上 运行 一些 javascript 来修复一些小问题,例如为不寻常的缩放场景匹配字体大小等。作为标准,我将可执行文件 javascript 放在 HTML 文档的 end 处。
在以下情况之一中生成 HTML:
<div class="mainBanner" data-bind="html: BannerHTML">
<div class="mainBanner-upper">some text</div>
<div class="mainBanner-face" id="mainTitle">some other text</div>
<div class="mainBanner-lower">some more text</div>
</div>
JS 对其进行操作 HTML:
(需要 https://github.com/adactio/FitText.js)
window.fitText(document.getElementById("mainTitle"));
据我所知,javascript 在生成 HTML 之前执行,而 javascript 在元素 returns [=14= 上执行].我如何告诉它等待?我尝试将 javascript 文件绑定到资源,并在 body 元素末尾用 <script>
标记简单地将其写入但没有成功。
由于您的问题似乎与DOM相关,我可以向您推荐两种方法。
您的 javascript 必须检查并等待 DOM。我强烈建议您阅读这篇 answer to ...how to call a function when the page/DOM is ready...
绑定数据后动态添加脚本(我不太确定)
祝你好运。
编辑
所以我查看了 dotvvm 文档以查找事件调用并发现了一些有趣的东西:
每个 DotVVM 页面都包含 Dotvvm.js,它在全局范围内定义了 dotvvm。此对象可用于访问视图模型并对各种页面事件做出反应。
这允许您访问由 DOTVVM 触发的特定事件,您只需找到您需要的事件即可。我在下面为您提供了一个示例。
你可以尝试这样的事情(活动可能不是你需要的):
<script>
//By subscribing to the event, your code will only be executed
// if "init" event is fired by dotvvvm
dotvvm.events.init.subscribe(()=>{
window.fitText(document.getElementById("mainTitle"));
//basically enclose the content of your script tag with this.
});
</script>
请务必阅读文档,因为我可能遗漏了什么? DOTVVM Javascript Events