我有以下情况:
<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
},
答案 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;
}
也许它不是达到预期效果的最佳解决方案,但它有效:)