Javascript 如何使用角度设置从对象属性中选择的显示格式?
我在html select中显示数据,如下所示:Javascript 如何使用角度设置从对象属性中选择的显示格式?,javascript,angularjs,Javascript,Angularjs,我在html select中显示数据,如下所示: $scope.StateList = {"States": [ { "Id": 1, "Code": "AL", "Name": "Alabama" }, { "Id": 2, "Code": "AK", "Name": "Alaska" }, { "Id": 3, "Code":
$scope.StateList = {"States": [
{
"Id": 1,
"Code": "AL",
"Name": "Alabama"
},
{
"Id": 2,
"Code": "AK",
"Name": "Alaska"
},
{
"Id": 3,
"Code": "AZ",
"Name": "Arizona"
},
{
"Id": 4,
"Code": "AR",
"Name": "Arkansas"
}]}
现在,这将在选择框中显示该州的全名,如“亚利桑那州”。我想做的是格式化显示,而不向对象添加新属性,使用类似(state.Name、state.Code、state.Id)的内容。我正在尝试使用某种过滤器来实现这一点,但我还没有弄明白。谢谢你的建议
尝试创建一个小格式筛选器:-
<select ng-model="Address.State"
ng-options="state.Code as state.Name for state in StateList.States"></select>
并将其用作:-
app.filter('stateName', function() {
return function(itm) {
return [itm.Name , itm.Code, itm.Id].join();
}});
有三种方法可以实现这一点。第一种方法是只设置要内联的值:
ng-options="state.Code as (state|stateName) for state in StateList.States
或者您也可以做同样的事情,但作为控制器中的一项功能:
<select ng-model="Address.State" ng-options="state.Code as (state.Name + ', ' + state.Code + ', ' + state.Id) for state in StateList.States"></select>
$scope.display=函数(状态){
返回state.Name+'、'+state.Code+'、'+state.Id;
}
或者您可以创建一个过滤器(根据PSLs答案)类似的内容?
$scope.display = function(state) {
return state.Name + ', ' + state.Code + ', ' + state.Id;
}
<select ng-model="Address.State" ng-options="state.Code as display(state) for state in StateList.States"></select>