2016-06-09 47 views
1

我正在用javascript编写带有angularJS转换标签的html,而不是转换不工作。如果我使用它在正常的HTML翻译工作正常。在javascript和angularjs中编写html转换不起作用

就像我在jQuery的编写HTML

$("#msg1").html(''); var htmls = "<h2>{{'loginWelComeBack' | translate }}</h2>"; $("#msg1").html(htmls);

在页面上我使用的这个样子。

<div id="msg1"></div> 

回答

0

您的表情{{'loginWelComeBack'| translate}}不在角度上下文中执行。 您需要让角度知道它是一个角度表达式的编译服务。

试试这个代码:

// Inject $compile, $scope in your code 
$("#msg1").html($compile(htmls)($scope)); 

Refer here,了解更多有关编译

+0

获取错误:$ compile没有被定义。 –

+0

你能检查我的代码吗?我是新的。 –

+0

https://plnkr.co/edit/guQbuYa7GLKcRuImn6CY?p=preview –

0

真的,你不应该用AngularJS打交道时设置的文本在所有使用jQuery。 看看ad ng-bind,ng-if和$ scope,所以AngularJS基础知识。

您应该为此创建一个指令,或者至少为此创建一个简单的角度标记。

<h2 ng-if="loginWelcomeBack" ng-translate="loginWelcomeBack"></h2> 

如果$ scope.loginWelcomeBack中,所述控制器被设置为假,它不会被示出,如果其值,它将被定义。

另一个相当不错的做法(与苦苦的网站相同)是保持你的翻译字符串分组。 如:

"COMMON_OK": "ok", 
"COMMON_CANCEL": "cancel", 
"ACCOUNT_WELCOME": "Welcome back {{user}}" 

对于后者,你可以插入 “用户名”,如:

<h2 ng-if="loginWelcomeBack" translate="loginWelcomeBack" translate-value-name="user.name"></h2> 
// $scope.user = { name: "John Doe", id: 1, whatever: "foobar" } must be defined in the controller of course. 

工作Plunker:https://plnkr.co/edit/V3Tnoj7jJGD8wY6SUUKc?p=preview

您可以检查出的细节在这里:https://angular-translate.github.io/docs/#/guide/06_variable-replacement

由于看起来你需要更多的基础知识,官方文档提供了一个很好的教程https://docs.angularjs.org/tutorial/step_01