为什么bootstrap popover在我的主模板指令中不起作用?

时间:2014-03-25 13:25:30

标签: javascript jquery angularjs twitter-bootstrap angularjs-directive

我想在以下内容中使用.popover(来自我的模板):

<li ng-repeat="(pid, product) in myProducts" class="status-indicator p{{pid}} {{product.status ? '' : 'disabled'}}"
                data-original-title="<?php echo _('Product status'); ?>"
                data-content="{{product.description}}: {{product.status ? '<?php echo _('enabled'); ?>' : '<?php echo _('disabled'); ?>'}}" status-indicator></li>

Popover从我的主要指令中获胜:

spampanel.directive('domainTable', function() {
    return {
        replace:true,
        template: $('#domainTableTemplate').html(),
        link: function(scope, elem, attrs) {
            $(".status-indicator").popover({
                placement: 'right',
                trigger: 'hover'
            });
        }
    };
});

我在这里做了很多事,没有用。

如果我专门针对那些&#39; li&#39;元素,它将工作,但只有$ apply:

spampanel.directive('statusIndicator', function() {
    return {
        link: function(scope, elem, attrs) {
            scope.$apply();
            elem.popover({
                placement: 'right',
                trigger: 'hover'
            });
        }
    };
});

为什么我必须使用$申请才能正常使用?如果我不使用$ apply,那么大括号之间的所有内容都会被取消评估&#34; {{...}}&#34;。

似乎我在正常时间之前迫使某些事情被执行,这对我来说似乎并不合适。如果有时间和地点我应该放置这个popover,它的时间和地点是什么?

我宁愿在这里只有一个指令,但我怎么能让它工作呢?

1 个答案:

答案 0 :(得分:1)

angularjs不知道在angularjs库之外做出的任何更改,因此您应该使用$scope.$apply() ...

包装代码

这里有关于$scope.$apply() ...

的非常好的文章

除此之外,你可以检查angular-ui-bootstrap库,以便更好地理解如何编写指令...

这里是angular-ui-popover