AngularJS-创建标签为$translated的对象数组
我有以下数组:AngularJS-创建标签为$translated的对象数组,angularjs,translate,Angularjs,Translate,我有以下数组: vm.roles = ['ROLE1', 'ROLE2', 'ROLE3', 'ROLE4']; 我需要这种形式的数组: vm.translatedRoles = [{id:0, label:'Role1'}, {id:1, label:'Role2'}, ...] 因此,我编写这个函数是为了从vm.roles转换到vm.translatedRoles。 我现在的问题是translatedRoles保持为空,因此其中没有对象。有人知道为什么吗 function transla
vm.roles = ['ROLE1', 'ROLE2', 'ROLE3', 'ROLE4'];
我需要这种形式的数组:
vm.translatedRoles = [{id:0, label:'Role1'}, {id:1, label:'Role2'}, ...]
因此,我编写这个函数是为了从vm.roles转换到vm.translatedRoles。
我现在的问题是translatedRoles保持为空,因此其中没有对象。有人知道为什么吗
function translateRoles() {
var translatedRoles = [];
for(var i = 0; i < vm.roles.length; i++) {
$translate(vm.roles[i]).then(function(text) {
var role = {};
role.id = i;
role.label = text;
translatedRoles.push(role);
});
}
return translatedRoles;
}
函数translateRoles(){
var translatedRoles=[];
对于(var i=0;i
无法工作$translate()返回一个承诺。传递给$translate的函数将在翻译可用时在以后异步执行。因此,return语句发生在函数填充translatedRoles之前
您需要返回数组的承诺,或者希望翻译已经可用,并使用$translate.instant()
函数translateRoles(){
var translatedRoles=[];
对于(var i=0;i
非常感谢您的完美回答
function translateRoles() {
var translatedRoles = [];
for (var i = 0; i < vm.roles.length; i++) {
translatedRoles.push({
id: i,
label: $translate.instant(vm.roles[i]);
});
}
return translatedRoles;
}