我花了几个小时试图理解为什么我被这个问题所愚弄。
小提琴:http: //jsfiddle.net/hanspc/ZJyTW/
小提琴只是我的问题的一个简化示例。这个想法是在产品上设置一些属性,并根据其他字段过滤字段值。(例如,如果 type=car 则不显示“飞机机翼”选项 :-))
<div class="productField" ng-repeat="field in product.fields | orderBy:order">{{field.name}} (hidden: {{field.disabledValue}}):
<div class="productFieldContent" ng-hide="field.disabledValue">
<select ng-model="product.values[field.name]" ng-options="design.text for design in field.values | filterValues:field:product.fields:product">
</select>
<button ng-click="$parent.field.disabledValue = !$parent.field.disabledValue">Toggle hide/show</button>
</div>
</div>
在小提琴中,第三个字段被隐藏,直到 field1=value 1 和 field2=Value 2:
if (arrayToReturn.length == 0) {
fieldData.disabledValue = true;
} else {
fieldData.disabledValue = false;
}
如您所见,当其他字段设置正确时,将为产品 1 显示字段 3。但是{{field.disableValue}}
字段名称旁边的绑定没有显示正确的值。
这是最奇怪的部分:产品 2 中的 field3 旁边显示了正确的值 (false),即使产品 2 中的 field3 保持隐藏状态。
我很确定我在范围继承中迷路了,而且我很确定这是因为两个 ngRepeats,但是有人可以告诉我发生了什么吗?:-)
谢谢