angularjs - 从远程数据控制的复选框状态

时间:2016-04-14 12:28:00

标签: angularjs checkbox angularjs-ng-checked

我正在尝试制作通知配置页面。基本上,用户应该能够选择他希望为特定模块接收哪种通知。有3种类型的通知(电子邮件,短信和用户界面)。目前我的数组是这样构建的

$scope.modules= [
        {
            "id": 1,
            "name": "Module1",
            "notifications": [
                {
                    "notification": "email"
                }
            ]
        },
        {
            "id": 2,
            "name": "Module2",
            "notifications": [
                {
                    "notification": "sms"
                },
                {
                    "notification": "ui"
                }
            ]
        }
    ];

我试图实现这个观点

enter image description here

问题: 当我尝试重复某个模块的通知时,如果例如{"通知":"电子邮件"}不存在,则该复选框不会保持未选中状态,而是从风景。

有关如何执行ng-repeat的任何想法?感谢

JSFiddle

1 个答案:

答案 0 :(得分:2)

结构有些不对劲。为什么没有像下面这样的通知的对象数组:

"notifications": [ {"sms": true}, {"email": false}, {"ui": true} ];

然后迭代并设置就好了。

迭代$scope.modules并且对于每个此类模块,在包装ng-repeat div中有三个复选框。然后根据notifications中的通知将其设置为选中/取消选中。

<span>Email</span>    <span>Ui</span>    <span>Sms</span>
<div ng-repeat="module in modules">
    {{ module.name }}
    <div ng-repeat="notification in module.notifications">
        <!-- Email -->
        <input type="checkbox" ng-model="notification.email" />
        <!-- Ui -->
        <input type="checkbox" ng-model="notification.ui" />
        <!-- Sms -->
        <input type="checkbox" ng-model="notification.sms" />
    </div>
</div>