使用 Angular 插值 {{ blah }} 与使用 ng-translate 时的 ng-bind='blah' 相比,我发现出现了意外的行为差异。使用 ng-translate。所以给定一个非常简单的 Controller
$scope.name = "Angular"
以下内容可以完美地使用插值和 ng-bind ..
<div>Interpolation : Hello {{ name }}</div>
<div>ng-bind : Hello <span ng-bind="name"/></div>
输出
Interpolation : Hello Angular
ng-bind : Hello Angular
现在,引入ng-translate,首先设置简单的翻译表..
$translateProvider.translations('en', {
'WELCOME-INTERPOLATE': 'Hello {{ name }}',
'WELCOME-BIND': 'Hello <span ng-bind="name"/>'
});
然后
<span translate translate-values="{name: name}">WELCOME-INTERPOLATE</span>
<span translate translate-values="{name: name}">WELCOME-BIND</span>
产生
Hello Angular <-- This is interpolate
Hello <-- This is ng-bind and **fails**
然后通过添加“translate-compile”,据我所知,它消除了对“translate-values”的需要,并提供了“translate”对其父范围的访问权限,相同的HTML用“translate-compile”替换了“translate-”值(value)观'
<span translate translate-compile>WELCOME-INTERPOLATE</span>
<span translate translate-compile>WELCOME-BIND</span>
产生相反的结果
Hello <-- This is interpolate and **fails**
Hello Angular <-- This is ng-bind
查看我的plunk例如
最佳答案
这个问题已在 github 中解决:
Everything is working as expected.
Either you had missed the value or HTML (aka templates which should be parsed) missed the compile flag.
See the plunkr
https://github.com/angular-translate/angular-translate/issues/987
关于angularjs - Angular 插值、ng-bind 和 ng-translate 意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28108930/