2017-06-06 135 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