【发布时间】:2018-08-27 04:19:18
【问题描述】:
我无法弄清楚这一点,不知道为什么它不起作用。我有一种情况,我需要有父复选框,当它们被选中时,子单选按钮下拉,他们需要为他们选择的每个复选框选择一个项目。这部分工作正常,问题是当多个复选框被选中时,单选按钮的行为就像它们都在同一个名字下,即使它们不是......当一个被选中时,当我只选择一个时,所有其他的都会被取消选中希望该名称下的其他人被取消选择。该模板是为正式使用而编写的,这就是为什么您看到 ng-model 可能看起来很奇怪的原因,它基本上采用了用于正式的模型(用于 angularjs 的优秀动态 js 表单库)
以下是输入 ng-repeats 的数组:
to.parents = [{name: 'IR', value: 'IR'}, {name: 'IS', value: 'IS'}, {name: 'IP', value: 'IP'}];
to.children = [{name: 'New', value: 'IRNew', parent: 'IR'}, {name: 'Maintenance', value: 'IRMain', parent: 'IR'}, {name: 'Existing', value: 'IRExist', parent: 'IR'}, {name: 'New', value: 'ISNew', parent: 'IS'}, {name: 'Maintenance', value: 'ISMain', parent: 'IS'}, {name: 'Existing', value: 'ISExist', parent: 'IS'}, {name: 'New', value: 'IPNew', parent: 'IP'}, {name: 'Maintenance', value: 'IPMain', parent: 'IP'}, {name: 'Existing', value: 'IPExist', parent: 'IP'}]
下面是模板:
<div class="radio-group row" ng-class="{\'has-error\': options.formControl.$invalid}">
<label class="control-label">{{to.label}}{{to.required ? \'*\' : \'\'}}</label>
</div>
<div class="row" style="margin-left:10px;">
<div class="{{to.col}}" ng-repeat="parent in to.parents track by $index" style="margin-top: 5px; margin-left:0px;"
ng-class="{\'checkbox\': !to.inline, \'checkbox-inline\':to.inline}">
<input type="checkbox" id="{{parent.value}}{{$index}}"
class="checkbox-inline styled styled-primary multiCheck{{$index}}"
aria-describedby="{{id}}_description" ng-value="parent.name"
ng-model="$parent.model[$parent.options.key || $parent.$index][parent.value]"
ng-disabled="{{parent.disabled}}">
<label for="{{parent.value}}{{$index}}" style="font-weight: normal;">{{parent.name}}</label>
<p id="{{id}}_description" class="help-block" ng-if="parent.desc">{{parent.desc}}</p>
<div class="radio" style="margin-left:20px; margin-top: 10px;"
ng-repeat="child in to.children track by $index"
ng-class="{\'radio\': !to.radInline, \'radioinline\':to.radInline}"
ng-if="child.parent === parent.name && $parent.model[$parent.options.key|| $parent.$index][parent.value]">
<div class="radio-group {{to.colChild}} pull-left"
style="margin-top: 5px; margin-bottom: 10px;">
<input type="radio" name="{{child.parent}}" id="{{child.value}}{{parent.value}}{{$index}}"
class="radio radio{{$index}}" ng-value="child.value" ng-model="model[parents.key]">
<label for="{{child.value}}{{parent.value}}{{$index}}">{{child.name}}</label>
</div>
</div>
</div>
</div>
所以基本上无线电组名称与父名称相同,因此 IP 中的子代以 IP 作为其名称,IR 下的子代以 IR 作为其名称,而 IS 下的子代以 IS 作为其名称...但是他们仍然表现得好像他们是同一个名字的一部分——这对我来说没有意义,因为单选按钮应该按他们的名字分组......任何帮助将不胜感激!
PS:请不要告诉我有关使用内联样式的信息——我知道这不是最佳实践,但我别无选择,因为我工作的公司拥有全球 CSS 表格,这是唯一可以查看的表格at,因此对此的任何修改都需要内联完成。
【问题讨论】:
标签: javascript angularjs angularjs-ng-repeat radio-group angular-formly