2016-06-09 42 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