http://jsfiddle.net/ADukg/2644/
为什么我的每个过滤器中的“已检查”默认值未在页面加载的复选框中设置?
我正在使用batarang来调试它,当我点击复选框时看起来模型正在更新,但是'checked'的默认值为true似乎不适合它。
如果我使用ng-checked =“filter.checked”似乎确实有用,但我不知道为什么。
JavaScript的:
$scope.filtersList = [
{"name":"type","checked":"true","label":"Source(s)","CSSClasses":"",
"values":[
{"key":"Online News","value":1,"parent":"false","children":[],"checked":"true"},
{"key":"Twitter","value":15,"parent":"false","children":[],"checked":"true"}]
},
HTML:
<div class="filter-listing" ng-controller="sidebar">
<ul class="filterSection" ng-repeat="filter in filtersList">
<li class="clearfix">
<span class="pull-left">
<a class="pull-left twistdown filterToggle"
href="#" title="Expand" data-toggle="collapse"
style="margin-top: 6px">
<i class="icon-white icon-plus-sign"></i>
</a>
<input type="checkbox" ng-model="filter.checked" id="filter.name" class="parentCheckbox allFilterCheckbox"/>
<label
style="display: inline;" for="filter.name">
{{filter.label}}
</label>
答案 0 :(得分:2)
因为filter.checked
设置为字符串("true"
)而不是布尔值。
要使ngModel
使用复选框,您需要使用布尔值。这就是为什么你不得不在你的小提琴中的子项中说ng-checked="filter.checked"
的原因。建议您使用ngModel
或ngChecked
,但不能同时使用。{/ p>