我使用angularjs 1.6.1
这是我的HTML:
<label ng-if="parents.children" ng-repeat="child in parents.children" class="checkbox" >
<input type="checkbox"
ng-model="selected.category[parents.cat_ID][child.cat_ID]"
id="{{child.cat_ID}}"
name="{{child.cat_ID}}"
>
<i class="icon fa fa-circle-o"></i>
<span class="name">{{child.name}} {{child.found}} {{child.cat_ID}}</span>
</label>
我需要做两件事:
1)显示IF {{child.found}}为真的复选框。
2)并且还要初始化 $ scope.selected = {} (ngModels)中找到的值
我的问题是,如果我添加输入:
ng-checked="child.found"
然后将检查复选框,但$ scope.selected将完全为空。如果我改用:
ng-init="selected.category[parents.cat_ID][child.cat_ID] = child.found"
然后它将使用正确的值填充$ scope.selected,但显示复选框已检查状态完全错误
我甚至尝试过
ng-false-value="false"
ng-true-value="true"
但没有改变......
感谢任何帮助! 谢谢!
答案 0 :(得分:1)
因为ngInit
指令不会创建新范围并在当前范围内填充变量。
在另一种情况下,如果你在selected
块中分配ng-if
,你在ngIf
子范围内执行它,这与你的控制器范围不同(它的原型继承自父范围,但其范围的每次更改都将“掩盖”外部范围),这就是您看到$scope.selected
仍为空的原因。