2015-10-17 56 views
1

我还是一个JavaScript新手,想知道如何设置一个$范围值等于另一个数组的值,并在另一个函数中使用它。这就是我想要做的事:设置范围值等于angularjs中的数组元素

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('LanguageController', LanguageController); 

    LanguageController.$inject = ['$scope','$translate']; 
    function LanguageController($scope,$translate) { 


     $scope.lang = [ 
      "Nederlands", 
      "Français", 
      "English", 
      "Deutsch", 
      "Español" 
     ]; 
     $scope.selectLang = $scope.lang[0]; 
     $scope.changeLang = function(){ 
      console.log("Lang === " + $scope.selectLang); 
     } 

     // When value of $scope lang change i would want do 
     //Change the value of this 
     $scope.langI18n = [ 
      "nl_NL", 
      "fr_FR", 
      "en_US", 
      "de_DE", 
      "es_ES" 
     ]; 

     //And then use it here 
     $scope.setLang = function(langKey) { 
      // You can change the language during runtime 
      console.log("change to " +langKey) 
      $translate.use(langKey); 
     }; 

    } 

})(); 

我知道$scope.langI18n是错误的,但我想知道我怎么能改善这个所以它的工作。

我认为一个可能的解决方案的时$scope.lang被设定使用的索引进行比较,以阵列langI18n的函数,然后设置LANGUES重视到setlang但我需要这方面的一些反冲启动。

回答

1

您可以在这里使用对象数组。

$scope.langs = [ 
    {"nl_NL": "Nederlands"}, 
    {"fr_FR": "Français"}, 
    {"en_US": "English"}, 
    {"de_DE": "Deutsch"}, 
    {"es_ES": "Español"} 
]; 
+0

这看起来很有前途,但我在$ scope.lang [0]上得到一个错误:无法读取未定义的属性'0'。 – Greg

+0

如果你从上面的答案中复制粘贴,那么它应该是$ scope.langs(在结尾处有's') – Guillaume

+0

好吧,现在这可以工作,但是我在$ scope.selectLang = $ scope.lang中遇到了以下问题[0]它返回2个对象。我怎么能说只需要第一个或最后一个对象? – Greg