角度插值,ng-bind和ng-translate意外行为

时间:2015-01-23 11:29:14

标签: angularjs angular-translate ng-bind angularjs-interpolate

我在使用Angular interpolation {{blah}}时看到意外的行为差异,而不是ng-bind =' blah' 使用ng-translate 时。所以给出一个非常简单的控制器

$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**

然后添加&#39; translate-compile&#39;根据我的理解,它消除了对翻译价值的需求。并给予&#39;翻译&#39;访问其父作用域,使用&#39; translate-compile&#39;替换&#39;翻译价值&#39;

<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

1 个答案:

答案 0 :(得分:0)

这是在github中解决的:

  

一切都按预期工作。

     

要么你错过了价值或HTML(也就是模板应该是   解析了)错过了编译标志。

     

参见plunkr

https://github.com/angular-translate/angular-translate/issues/987