【问题标题】:how to create a combination of two properties as "name" in ng-options如何在 ng-options 中创建两个属性的组合作为“名称”
【发布时间】:2015-03-19 13:46:44
【问题描述】:

通常我们做的是

...}}_{{$index}}" ng-options="option.serial_no as option.NameRelation for option in fullFamilydetails" ng-model="obj.ch6a_decl_fam_memb_id">

我正在使用 Java

...
familyDetails.put("NameRelation", Emp_FamilyInfoTemp.getName()+"-"+Emp_FamilyInfoTemp.getRelation());
                            }else{
...

如您所见,我在 java 上处理它以将“NAME”-“RELATION”对显示为“ng-options 的名称”

但我想要将 NAME 和 RELATION 保留为 json 中的不同属性,但在创建 ng-options 时显示它们的组合,所有这些我都想在保持属性分开的同时创建相同的效果。

当前示例 Json

[{"DOB":"2014-09-03 00:00:00.0","NameRelation":"MaleChildTest-Son","SERIAL_NO":55213,"AGE":"0"},{"DOB":"2014-09-12 00:00:00.0","NameRelation":"FemaleChildTest-Daughter","SERIAL_NO":55216,"AGE":"0"},{"DOB":"2014-09-12 00:00:00.0","NameRelation":"MaleChildTesEmp-Son","SERIAL_NO":55217,"AGE":"0"},{"DOB":"2014-09-12 00:00:00.0","NameRelation":"FemaleChildEmployeeTest-Daughter","SERIAL_NO":55218,"AGE":"0"},{"DOB":"","NameRelation":"Test-Father","SERIAL_NO":55219,"AGE":"0"}]

假定的 JSON

[{"DOB":"2014-09-03 00:00:00.0","Name":"MaleChildTest","Relation":"Son","SERIAL_NO":55213,"AGE":"0"}....]

在下拉列表中,我希望 Name-Relaiton 作为选项的“名称”。

【问题讨论】:

  • 您要显示(名称与关系 - 单个值)还是名称-关系对有 n 个组合?如果您提供示例 json 将会很有用

标签: angularjs ng-options


【解决方案1】:

DEMO

<select  ng-options="option.serial_no as label(option.Name, option.Relation)  for option in fullFamilydetails" ng-model="obj"></select>

在你的 JS 中:

angular.module("SO29137733", [])
    .controller("MainCtrl", function ($scope) {
    $scope.fullFamilydetails = [{
        "DOB": "2014-09-03 00:00:00.0",
            "Name": "MaleChildTest",
            "Relation": "Son",
            "SERIAL_NO": 55213,
            "AGE": "0"
    }, {
        "DOB": "2014-09-03 00:00:00.0",
            "Name": "MaleChildTest",
            "Relation": "Son",
            "SERIAL_NO": 55213,
            "AGE": "0"
    }];
    $scope.label = function (name, relation) {
        return name + "-" + relation;
    }
});

另一种选择:

DEMO

<select>
  <option ng-repeat="option in options" value="{{option.serial_no}}">
    {{option.name + " "+option.relation}}
  </option>
 </select>

在你的 JS 中:

angular.module("SO29137733", []) 
   .controller("MainCtrl", function($scope){
  $scope.options = [{
    serial_no : "123",
    name : "hi",
    relation: "parent"
  },
                   {
    serial_no : "1233",
    name : "sa",
    relation: "sdf"
  }];
})

【讨论】:

  • 不,不想使用 ng-repeat 创建选项,对不起
  • label(...) 给我未定义。只是(...) 工作正常。在文档中也没有找到任何东西
【解决方案2】:

如果您想将其显示为一对选项,请执行以下操作,

ng-options="option.serial_no as (option.name+' '+ option.relation) for option in fullFamilydetails"

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 2012-08-21
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
相关资源
最近更新 更多