【问题标题】:MDL - popup snackbar on page loadMDL - 页面加载时弹出小吃栏
【发布时间】:2016-07-05 10:11:28
【问题描述】:

我正在使用来自 google 和 jquery 的 Material Design Light。 我似乎无法让小吃栏在页面加载时显示。我的错误 得到是

index.cshtml(摘录)

<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

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

我遇到的错误是当加载带有errortext viewbag的页面时,它会立即执行addSnackbar,然后snackbarConatiner.MaterialSnackbar将为null

我试图延迟它以给其他东西加载时间?但是正如您所看到的,但由于某种原因,它实际上并没有等待延迟结束,然后再执行函数 addSnackbar()

我认为在 document.ready 之后设置了一些 mdl 元素,但是在完成之后如何设置小吃栏?

【问题讨论】:

    标签: javascript jquery model-view-controller razor material-design-lite


    【解决方案1】:

    我一直误解 jquery document.ready 的工作原理。一旦页面完成渲染,它将执行,但不会等待 js 库完成。在这种情况下,material.js 还没有完成加载。所以我将 index.cshtml 中的脚本替换为以下

    <script>
            $(window).load(function () {
                var ErrorStringValue = '@ViewBag.ErrorText';
                if (ErrorStringValue.length > 0) {
                    addSnackbar(ErrorStringValue);
                }
            });
    </script>
    

    这很好用。 Window.load 事件也会在所有库加载完成后触发。

    【讨论】:

    • 当时我正在使用 chrome 和 firefox 进行开发,所以它应该可以工作。您遇到的具体问题是什么?
    • 我仍然得到未定义的异常。我按照这个替换了窗口对象的 onload 事件,它正在工作:github.com/google/material-design-lite/issues/…
    • 我想在我的解决方案中加载其他一些库可能会导致那里推荐的小延迟。不过链接很好
    • 对于 jQuery 3.0,这需要更改为 $(window).on('load', function () {,因为 .load() 不再存在。
    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多