2017-06-06 171 views
0

我定義這個常量:動態屬性名稱

constant('countries', [{ 
      NAME_IT: "Francia", 
      NAME_US: "France" 
     }, 
     { 
      NAME_IT: "Italy", 
      NAME_US: "Italia" 
     } 
    ]); 

我想要顯示的國家的名稱之後的語言(IT或美國),我在我的控制器language定義:

<ul> 
    <li ng-repeat="cc in ctrl.countries"> 
     <!-- cc.NAME_US or cc.NAME_IT --> 
    </li> 
</ul> 

我無法找到顯示動態屬性NAME_USNAME_IT的方法。我怎樣才能做到這一點?

謝謝!

+1

你可以發佈你的控制器的代碼嗎? –

回答

0

我終於創造我的控制器方法返回的名稱是這樣的值:

getCountryName(country) { 
     return country["NAME_" + this.profile.language]; 
    } 

這樣,我不再有一個動態的attibute名稱的問題,我剛纔打電話我的方法:

<li ng-repeat="cc in countriesList"> 
     {{ctrl.getCountryName()}} 
</li> 
0

您需要將constant注入controller,然後將其分配給控制器的$scope屬性,然後將該範圍屬性綁定到您的HTML。

例如:在控制器:

app.controller("MyCtrl", ["$scope", "countries", function ($scope, countries) { 
    $scope.countriesList = countries; 
    //other code 
}]); 

進一步HTML,如:

<li ng-repeat="cc in countriesList"> 
     {{cc.NAME_IT}} -{{cc.NAME_US}} 
</li> 

看到這個fiddle.

+0

我的問題是,我必須顯示「cc.NAME_IT」或「cc.NAME_US」,但不能同時顯示......無論如何。 – Anna

+0

也在您的問題中指定了您想要顯示NAME或IT的條件? – anoop

0

寫在你的控制器:

.controller('YourController', ['countries', function(countries) { 
    this.countries = countries; 
}] 

現在,您可以像在視圖中那樣使用它。

注意:強烈建議在大寫中定義常量。即。 COUNTRIES你的情況

+0

我會用大寫字母,謝謝觀察。 – Anna