在加载页面时从指令编译 HTML 字符串

Compiling HTML string from directive at the time of loading the page

在Html中:

<vs-context-menu id="contextMenu" class="dropdown-menu pointer-cursor" context-menu-hide></vs-context-menu>

在angular JS指令中:

directive('vsContextMenu', function ($compile) {
    var defaultTemplate = '<ul style="list-style-type: none; padding-left: 20px;" ><li>AA</li></ul>';

    return {
        restrict: 'E',
        link: function(scope, element, attrs) {
              element.html(defaultTemplate).show();
              $compile(element.contents())(scope);
        }
    };
});

单击正常时会显示上下文菜单。但是它在页面加载时闪烁。如何在页面加载时隐藏?

不要使用 link 函数渲染它,而是使用指令的 template 参数,这将不会显示闪烁效果并且还会在该元素上添加 ng-cloak

指令

directive('vsContextMenu', function($compile) {
    var defaultTemplate = '<ul ng-cloak style="list-style-type: none; padding-left: 20px;" ><li>AA</li></ul>';
    return {
        restrict: 'E',
        template: defaultTemplate
    };
});