如果在ng-repeat中找不到,则显示默认值

时间:2016-05-21 11:42:30

标签: angularjs angularjs-ng-repeat ng-repeat

我有以下情况:

<div ng-repeat="field in model.Fields">               
        <div class="col-xs-2">
            {{field.Code}}
         </div>
         <div class="col-xs-2">
            {{field.Name}}
         </div>                   
         <div class="col-xs-2">
            <div class="aaa" ng-repeat="(key, value) in model.FieldSemantics">
                 <span ng-click="">
                     <enum-name-display ng-if="field.Code == key" value="value" values="@Html.ValuesForEnum(typeof(FieldRoleEnum))"></enum-name-display>                                  
                 </span>                           
             </div> 
        </div>
    </div>

model.Fields是数组

model.FieldSemantics是一个对象,其中key等于字段的代码和值等于枚举值。

当field.Code等于key时,我想显示枚举的值。它运行良好,但对于数组中的某些字段,model.FieldSemantics中没有相等的(键,值)对。对于这种情况,我想显示默认值f.ex.短划线“ - ”。我不知道如何解决它。

示例json:

      "Fields": [
                {
                    "Code": "field1",
                    "Name": "Field 1",
                },
                {
                    "Code": "field2",
                    "Name": "Field 2",
                },
                {
                    "Code": "field3",
                    "Name": "Field 3",
                },
                {
                    "Code": "field4",
                    "Name": "Field 4",
                },
                {
                    "Code": "field5",
                    "Name": "Field 5",
                },
            ]
    "FieldSemantics": {
         "field1": 0,
         "field3": 1,
         "field5": 2
     },

2 个答案:

答案 0 :(得分:2)

只需在ng-repeat中输入枚举即可。使用第一个基本上和你一样,第二个使用类似:ng-if="! field.Code == key"

答案 1 :(得分:1)

我以不同的方式解决了这个问题。我补充说:

<enum-name-display ng-if="field.Code == key" value="role(field.Code)" values="@Html.ValuesForEnum(typeof(FieldRoleEnum))"></enum-name-display> 

此:

value="role(field.Code)"

在ctrl中添加适当的功能:

$scope.role = function (code) {
    var fieldSemanticsObj = $scope.model.FieldSemantics;
    var value = 4; // default value
    if (fieldSemanticsObj.hasOwnProperty(code)) 
    {
       value = fieldSemanticsObj[code];
    }
    return value;        
}

也许它不是达到预期效果的最佳解决方案,但它有效:)

相关问题