2016-03-04 4 views
0

У меня возникли проблемы с выяснением того, как я мог бы перевести свой массив внутри контроллера.Перевести массив внутри контроллера, используя pascal translate in angularjs

Внутри моего контроллера я сделал что-то вроде этого:

var vm = this; 

    $rootScope.$on('$translateChangeSuccess', function() { 
     vm.salutation = $translate.instant('client.test'); 
     console.log(vm.salutation); 
    }); 

    vm.test = 'test'; 


    vm.servicesData = { 
     listOfServiceNames : [ 
      "sample", 
      vm.salutation, 
      vm.test, 

     ] 
    } 

Внутри зрения:

<bootstrap-dropdown ng-model="vm.client.salutation" data-placeholder="Aanhef" data-dropdown-data="vm.servicesData.listOfServiceNames"></bootstrap-dropdown> 

console.log показывает правильную строку. Но когда я смотрю на передний конец, vm.salutation пуст. Любые подсказки, как я мог правильно использовать перевод здесь?

+0

ли вы попробовать инициализации 'vm.salutation' к чему-то первым в контроллере? Если вы уже это сделали, можете ли вы показать, как выглядит ваш взгляд? Плункер также помог бы –

+0

Привет @NMittal, я инициализировал vm.salutation, но выпадающее меню все еще дает пустую строку. Но console.log показывает правильную строку. – Greg

+0

Я думаю, вам нужно иметь 'vm.servicesData.push (vm.salutation)' в вашем $ на обратный вызов и 'vm.servicesData = { listOfServiceNames: [ "образец", vm.test ] }' –

ответ

1

Как отмечено в комментариях, вы должны нажать элементы массива listOfServiceNames, чтобы наблюдатели могли запускать и обновлять представление.

Вам нужно

$rootScope.$on('$translateChangeSuccess', function() { 
     vm.salutation = $translate.instant('client.test'); 
     vm.servicesData.push(vm.salutation);   
     console.log(vm.salutation); 
    }); 

И

vm.servicesData = { 
    listOfServiceNames : [ 
     "sample", 
     vm.test 
    ] 
} 
Смежные вопросы