如何在angular-translate中传递参数

22 javascript angularjs

我创建了一个执行一些错误检查的函数,并将在不同的输入字段中使用.我的功能代码如下:

errorChecks = (element, minlength) => {
   if (element.$dirty) {
      if (element.$error.required == true) {
         this.errorMessage = "REQUIRED";
         return;
      } else if (element.$viewValue.length < minlength) {
          this.errorMessage = "MINLENGTH" // MINLENGTH error with parameters here
          return;
      } else {
          this.errorMessage = null;
          return;
      } 
   }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用angularjs翻译我的错误消息.

"MINLENGTH": "{{ element }} must be at least {{ value }} characters",
Run Code Online (Sandbox Code Playgroud)

我想通过将参数传递给翻译来动态更改我的错误消息,如下所示:

errorChecks(username, 5);
Run Code Online (Sandbox Code Playgroud)

如果我在用户名字段中输入1个字符,则错误会显示:username must be at least 5 characters.

我甚至想做什么?

Ank*_*nkh 31

如果你翻译的控制器内为这一个,除非你想通过这很可能是最好的element,并minlength给模板.

首先,您需要注入$translate控制器.然后生成您的消息:

this.errorMessage = $translate('MINLENGTH', { element: element, value: minlength });
Run Code Online (Sandbox Code Playgroud)

此处还概述此方法.

要在模板中执行此操作(此处概述):

{{ MINLENGTH | translate : '{ element: element, value: minlength }' }}
Run Code Online (Sandbox Code Playgroud)

  • 您在模板中的解决方案对我不起作用。我不得不删除引号。 (2认同)

Bil*_*lle 13

对于任何想知道语法如何的人,对于使用方法来检索翻译输入,这对我有用:

   {{ MINLENGTH | translate : { x: table.getShownCount(), y: table.getTotalCount() } }} 
Run Code Online (Sandbox Code Playgroud)


Off*_*'er 10

这对我来说效果很好:

{{'commisionMessage' | translate : {fee:fee} }}|
Run Code Online (Sandbox Code Playgroud)

Json 文件

"commisionMessage": "BLA {{fee}} BLA BLA"
Run Code Online (Sandbox Code Playgroud)


Sam*_*esh 9

你也可以使用 $translate.instant('MINLENGTH', { element: element, value: minlength })


Sac*_*dra 5

您也可以在这样的模板中执行此操作。

<span data-translate="MINLENGTH" data-translate-values="{ element: element, value: minlength }"></span>
Run Code Online (Sandbox Code Playgroud)