angularjs - Angular 插值、ng-bind 和 ng-translate 意外行为

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

使用 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/

相关文章:

javascript - UI Bootstrap 破坏 angularjs post 请求

angularjs - 在 Angular-MD5 中使用 createHash

javascript - Restangular 没有调用服务器

angularjs - 如何以更好的方式包含 Angular 翻译器?

javascript - 对过滤器参数应用过滤器

javascript - 是什么导致 AngularJS 变量更改触发 html 更新?

javascript - 将 limitTo 与 ng-bind 一起使用

javascript - 在 Controller 中使用 $filter 进行 ng-repeat 数组

javascript - Angular 逆 $watch