Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-创建标签为$translated的对象数组_Angularjs_Translate - Fatal编程技术网

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;
}