我创建了jsBin来说明问题。
在同样使用指令要求隔离范围的元素上使用tooltip from the Angular UI时,例如:
.directive('smile', function() {
return {
scope: {},
template: ':)'
};
});
我在Firefox中遇到以下错误,但在Chrome中没有:
错误:多个指令[smile,tooltip]要求隔离范围 on:< a class =“ng-isolate-scope ng-scope”href =“#”tooltip =“Tooltip” tooltip-placement =“bottom”smile =“”>
这很奇怪,因为我不希望工具提示要求隔离范围。我的理解是this line in the source说该指令不要求一个孤立的范围,并且只有the popup在页面底部注入。
我在这里缺少什么?为什么这个错误只出现在Firefox中?
答案 0 :(得分:5)
您提到的代码行
限制:'EA',
scope: true, link: function link ( scope, element, attrs ) { var tooltip = $compile( template )( scope ); var transitionTimeout; var popupTimeout;
.....
设置范围为true还会创建 new 范围,该范围原型继承自父范围。 [Google群组]
所以当你这样做
范围:{},
同时创建一个新范围,但是已隔离。所以两个范围相同
< a>
每个元素只能有一个范围。
对于Firefox问题,请参阅: 相同元素上的孤立范围单一断言适用于Chrome,在Firefox上失败 https://github.com/angular/angular.js/issues/3208