我有两个问题。
1)如何使用angularjs翻译ng-repeat?
我有Json文件,所有文本都正常工作,但没有ng-repeat。 我在json的片段:
"rules":{
"points":[
{"text":"1"},
{"text":"2"},
{"text":"3"}
]
}
我试着写这样的东西而且它不起作用:
<ul ng-repeat="rule in 'rules.points' ">
<li >{{rule.text | translate}}</li>
</ul>
2)如何使用angularjs翻译src和href?
有人可以给我一些帮助吗?
答案 0 :(得分:0)
可能的问题#1:错误的翻译密钥
检查translations.json文件中的翻译密钥是否与rule.text
中的完全相同可能的问题#2:翻译未及时加载
&#34;翻译&#34;在{{key | translate}}是过滤器,过滤器是同步的。这意味着,时间过滤器完成执行时,您的translations.json(或您使用的任何一个源)文件中的翻译密钥可能无法加载。试试这个(异步方式):
<li translate="{{rule.text}}"></li>
或
<li><span translate="{{rule.text}}"></span></li>
答案 1 :(得分:-1)
首先,如果您真正意味着翻译,这是毫无意义的。
你想要使用的是Angular 2或4中的管道。所以你应该有这样的东西:
import {Pipe, PipeTransform} from '@angular/core';
@Pipe ({
name : 'translate'
})
export class MyPipe implements PipeTransform {
transform(val : string) : string {
// number check...
return (parseInt(val) + 10) + '';
}
}
我认为这应该有效,如果您的组件已知该类。通常管道都在自己的模块中,因此请确保管道在那里正确导出。
你的第二个问题:
我认为最好将管道的逻辑部分移动到另一个类中的静态方法,如'PipeFunctions.ts'。
像
这样的东西export class PipeFunctions {
static translate(val : string) : string {
return (parseInt(val) + 10) + '';
}
}
现在,管道以及组件可以使用转换。只需在xyz.component.ts中实现代理方法,如
translate(val : string) : string {
return PipeFunctions.translate(val);
}
然后在相应的HTML中:
<a href="translate('1')">whatever</a>
如果它不起作用(抱歉,无法在此处查看),请尝试
<a [href]="translate('1')">whatever</a>
甚至
<a [attr.href]="translate('1')">whatever</a>