Angularjs 角度材质md对话框加载延迟

Angularjs 角度材质md对话框加载延迟,angularjs,angularjs-material,Angularjs,Angularjs Material,我有一个按钮,点击它会弹出一个md对话框。这个对话框包含一些非常繁重的html和javascript,第一次单击按钮时,大约需要半秒钟来显示对话框(我猜是因为DOM正在创建,因为它不会再次出现)。我有没有办法避免这种滞后 更新:我已经将问题缩小到需要预编译模板。如何将编译后的模板附加到对话框?这是我的对话: $mdDialog.show({ escapeToClose: true, parent: parentEl, targetEvent: $event, te

我有一个按钮,点击它会弹出一个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]
    });

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

更新:

在看到您的代码片段之后,似乎更明智的做法是预先填充templateCache,而不是我上面提到的内容。你可以用这个

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

最好是在构建过程中添加此选项;使用Grunt或Gulp有非常方便的插件可用。

如何将编译后的模板附加到mdDialog?请添加有问题的源代码,这样我们可以给出更好的答案:)没有问题的源代码;只是一个大文件导致了速度减慢。这是一个典型的mdDialog设置,但我已经更新了这个问题供您参考。您的源代码在如何调用对话框中清除了一些内容。当用户单击时是否加载templateUrl?或者它已经在您的templateCache中了?是的,当用户单击时会加载它。它只是第一次慢下来。如何预缓存模板?您是否解决了此问题?如果我在返回模板HTML之前引入了一个虚假的延迟,比如说2秒,然后在打开mddialog的按钮上单击多次,对话框就会失去响应。