javascript - AngularJS 延迟编译指令直到元素可见

标签 javascript angularjs fancybox-2 jvectormap

我有一个 Angular Directive(指令),可以渲染 jVectorMap .

当页面首次加载时, map 是隐藏的,但用户可以单击链接以 fancyBox 中显示 map 。

它在 Chrome 和 IE 中工作得很好,但在隐藏元素上渲染 SVG 时 Firefox 会对我大喊大叫(我得到 NS_ERROR_FAILURE)(参见 this question )

基于此 question ,我试图让我的 map 指令在可见之前不渲染/编译,我认为这将解决 Firefox 中的问题。

有没有办法做到这一点,或者我是否以错误的方式处理这个问题?

谢谢!!

更新

使用ng-if确实有效,但是在jVectorMap中用户可以在 map 上选择区域和标记。我希望这些选择即使在 fancyBox 关闭后也能保留。 ng-if 将 map 全部删除。

指令

angular.module('myApp')
    .directive("selectionMap", electionMap);

    function selectionMap(){
        return {
            restrict: "E",
            link : function(scope,element){
                jVectorMapOptions = {
                    // set jvm options (http://jvectormap.com/documentation/javascript-api/jvm-map/)
                    option : 'something',
                    option2: 'something else'
                    // and so on 
                };
            element.vectorMap(jVectorMapOptions);

            }
        }
    }

我如何在 html 中使用该指令:

<div id="mapModal" ng-show="mapSelected">
    <selection-map id="myMap"></selection-map>
</div>

mapModal div 显示在 fancybox-2 模式内。

最佳答案

尝试使用ng-if而不是 ng-show。当条件满足时,这将在页面上创建 HTML 元素,当条件不满足时将其删除。

关于javascript - AngularJS 延迟编译指令直到元素可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817692/

相关文章:

javascript - 高性能 dom 添加和删除

javascript - Angular 范围内的值变得不确定

javascript - 如何在 Angular 中将数据发送到 ng-click 函数?

jquery - 将 fancybox 与 elevatezoom 结合起来。变焦不起作用

Jquery如何隐藏工具提示验证消息

javascript - 在 JavaScript 中创建订阅和取消订阅而不传递订阅者 ID

javascript - jQuery 验证插件 : how to check if an element is valid?

javascript - HTML 标签内的高级 JavaScript RegExp 替换

javascript - angularjs:为什么 ng-click 似乎不评估 {{}}

javascript - jQuery FancyBox YouTube 视频无法正常工作