Angularjs init检查状态和ngModel值

时间:2017-10-24 13:31:48

标签: angularjs checkbox

我使用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,但显示复选框已检查状态完全错误checkbox status wrong

我甚至尝试过

ng-false-value="false"
ng-true-value="true"

但没有改变......

感谢任何帮助! 谢谢!

1 个答案:

答案 0 :(得分:1)

因为ngInit指令不会创建新范围并在当前范围内填充变量。

在另一种情况下,如果你在selected块中分配ng-if,你在ngIf子范围内执行它,这与你的控制器范围不同(它的原型继承自父范围,但其范围的每次更改都将“掩盖”外部范围),这就是您看到$scope.selected仍为空的原因。