【问题标题】:Angular material md-dialog load delay角材料 md-对话框加载延迟
【发布时间】:2018-01-04 13:54:42
【问题描述】:

我有一个点击按钮,会弹出一个 md 对话框。此对话框包含一些相当繁重的 html 和 javascript,第一次单击按钮时,显示对话框大约需要半秒钟(我猜是因为正在创建 DOM,因为它不会再次发生)。有什么办法可以避免这种延迟?

更新:我已将问题缩小到需要预编译模板。如何将编译的模板附加到对话框?这是我的对话:

$mdDialog.show({
    escapeToClose: true,
    parent: parentEl,
    targetEvent: $event,
    templateUrl: "someurl", //This gets a big html file
    locals: {
        items: $scope.items
    },
    controller: ["$scope", "$mdDialog", DialogController]
    });

【问题讨论】:

  • 这个问题你解决了吗?如果我在返回模板 HTML 之前引入了 2 秒的假延迟,并多次单击打开 mddialog 的按钮,则对话框变得无响应。

标签: angularjs angularjs-material


【解决方案1】:

你可以使用 $compile 来预编译东西。但是,如果您将有问题的源代码添加到您的问题中,可以获得更好的答案。

更新:

在看到您的代码 sn-p 后,预填充您的 templateCache 似乎更明智,而不是我上面提到的。您可以为此使用$templateCache.put

$templateCache.put('mytemplate.html', '<b>My</b> template');

最好在构建过程中添加它;使用 Grunt 或 Gulp 可以使用非常方便的插件。

【讨论】:

  • 如何将编译好的模板附加到 mdDialog?
  • 请添加您有问题的源代码,以便我们给出更好的答案:)
  • 源代码本身没有问题;这只是一个导致减速的大文件。这是一个典型的 mdDialog 设置,但我已经更新了问题供您参考。
  • 您的源代码清除了您调用对话框的方式。用户点击时是否加载了 templateUrl?或者它已经在你的 templateCache 中了?
  • 是的,用户点击时加载。只是第一次很慢。如何预缓存模板?
猜你喜欢
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 2020-04-06
  • 1970-01-01
  • 2023-03-25
  • 2020-04-24
  • 2021-11-27
相关资源
最近更新 更多