在特定范围内禁用 angular 指令?
disable angular directive on specific scope?
我们正在使用第三方库angular translate,指令名称是data-translate。但是我们的合作伙伴有一个 js 文件注入到我们的页面,他们使用 jquery 找到相同的指令 "data-translate" 然后翻译元素。所以每次 angular 翻译都会覆盖它。
样本:
<script src="angular-translate">//it will search data-translate and make the translate by it's key</script>
<script src="jquery-translate">//it will search data-translate and make the translate by it's key</script>
<header data-translate="headerKey"></header>
<div data-translate="translateKey"></div>
<footer data-translate="footerKey"></footer>
最后会是
<header data-translate="headerKey">angular-translate</header>
<div data-translate="translateKey">angular-translate</div>
<footer data-translate="footerKey">angular-translate</footer>
但我需要的是:
<header data-translate="headerKey">angular-translate</header>
<div data-translate="translateKey">jquery-translate</div>
<footer data-translate="footerKey">angular-translate</footer>
所以我想问一下是否可以在特定范围内禁用 angular 指令?
我找到了一种方法来处理这个问题,方法是在 angular-translate 指令 link 函数之上添加代码:
if($scope.disableTranslate){return;}
并为 disableTranslate 添加我自己的指令:
app.directive('disableTranslate', [function() {
return {
restrict: 'A',
controller: ['$scope', function($scope) {
$scope.disableTranslate = true;
},],
};
},])
这样我就可以使用 disable-translate 指令来声明元素的范围不是由 angular-translate 而是 jquery-translate.
翻译的
我们正在使用第三方库angular translate,指令名称是data-translate。但是我们的合作伙伴有一个 js 文件注入到我们的页面,他们使用 jquery 找到相同的指令 "data-translate" 然后翻译元素。所以每次 angular 翻译都会覆盖它。
样本:
<script src="angular-translate">//it will search data-translate and make the translate by it's key</script>
<script src="jquery-translate">//it will search data-translate and make the translate by it's key</script>
<header data-translate="headerKey"></header>
<div data-translate="translateKey"></div>
<footer data-translate="footerKey"></footer>
最后会是
<header data-translate="headerKey">angular-translate</header>
<div data-translate="translateKey">angular-translate</div>
<footer data-translate="footerKey">angular-translate</footer>
但我需要的是:
<header data-translate="headerKey">angular-translate</header>
<div data-translate="translateKey">jquery-translate</div>
<footer data-translate="footerKey">angular-translate</footer>
所以我想问一下是否可以在特定范围内禁用 angular 指令?
我找到了一种方法来处理这个问题,方法是在 angular-translate 指令 link 函数之上添加代码:
if($scope.disableTranslate){return;}
并为 disableTranslate 添加我自己的指令:
app.directive('disableTranslate', [function() {
return {
restrict: 'A',
controller: ['$scope', function($scope) {
$scope.disableTranslate = true;
},],
};
},])
这样我就可以使用 disable-translate 指令来声明元素的范围不是由 angular-translate 而是 jquery-translate.
翻译的