首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDL -页面加载时弹出的snackbar

问MDL -页面加载时弹出的snackbar
EN

Stack Overflow用户
提问于 2016-03-18 15:17:35
回答 1查看 3.7K关注 0票数 2

我使用的材料设计灯,来自谷歌,和jquery。我似乎无法让零食条显示在页面上。我所犯的错误是

index.cshtml (萃取物)

代码语言:javascript
复制
<div id="demo-toast-example" class="mdl-js-snackbar mdl-snackbar mdl-color--accent">
        <div class="mdl-snackbar__text"></div>
        <button class="mdl-snackbar__action" type="button" style="display:none;"></button>
</div>
<script>
    $(function () {
        var ErrorStringValue = '@ViewBag.ErrorText';
        if (ErrorStringValue.length > 0) {
            setTimeout(addSnackbar(ErrorStringValue), 2000);
        }
    });
</script>

scripts.js

代码语言:javascript
复制
function addSnackbar(string) {
    var snackbarContainer = document.querySelector('#demo-toast-example');
    var data = { message: string, timeout: 2000 };
    snackbarContainer.MaterialSnackbar.showSnackbar(data);
}

我遇到的错误是,当使用错误文本视图包加载页面时,它将立即超出addSnackbar ,然后snackbarConatiner.MaterialSnackbar将为空。

我试着拖延它让其他东西有时间装载?但是,正如您所看到的,但出于某种原因,它实际上并不等待延迟结束,然后才会超出函数addSnackbar()

我猜想mdl中有一些元素可以在document.ready之后进行设置,但是如何在完成之后设置snackbar呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-18 15:50:39

我一直误解了jquery document.ready的工作方式。一旦页面完成呈现,它就会异常,但不会等待js库的完成。在这种情况下,material.js还没有完成加载。因此,我用以下内容替换了index.cshtml中的脚本

代码语言:javascript
复制
<script>
        $(window).load(function () {
            var ErrorStringValue = '@ViewBag.ErrorText';
            if (ErrorStringValue.length > 0) {
                addSnackbar(ErrorStringValue);
            }
        });
</script>

这个效果很好。Window.load事件也将在所有库完成加载后触发。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36088055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档