ng-model没有获取默认值复选框

时间:2013-05-07 14:52:35

标签: javascript angularjs angularjs-directive

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>

1 个答案:

答案 0 :(得分:2)

因为filter.checked设置为字符串("true")而不是布尔值。

要使ngModel使用复选框,您需要使用布尔值。这就是为什么你不得不在你的小提琴中的子项中说ng-checked="filter.checked"的原因。建议您使用ngModelngChecked,但不能同时使用。{/ p>