保存在angularjs

时间:2018-01-19 06:35:38

标签: javascript angularjs

我正在为我的应用程序使用angularjs。我使用多个复选框选择并以[1,2,3,4,5]格式将其存储在数据库中。例如,如果选中的复选框为1,那么我将存储值为1.如果选择多个,则1,2,3,依此类推。

这是html

<div class="col-xs-12">
    <div data-ng-repeat="healthStatus in HealthStatuses">
        <input  id="chkCustomer_{{healthStatus.Value}}" value="
            {{healthStatus.Value}}" type="checkbox" 
            data-ng-checked="selection.indexOf(healthStatus.Value) > -1" 
            data-ng-click="toggleSelectionHealthStatus(healthStatus.Value)" />
        {{healthStatus.Name}}</label>
    </div>
</div>

这是controller.js

$scope.HealthStatuses = [{
    Name: 'Alzheimers',
    Value: 1,
    Selected: false
}, {
    Name: 'Arthritis',
    Value: 2,
    Selected: false
},{
    Name: 'Cancer',
    Value: 3,
    Selected: false
},{
    Name: 'Cellulitis',
    Value: 4,
    Selected: false
}];

以下是我如何推送所选复选框值

$scope.selectionHealthStatus=[];
$scope.toggleSelectionHealthStatus = function toggleSelection(Value) {
    var idx = $scope.selectionHealthStatus.indexOf(Value);
    if (idx > -1) {
        $scope.selectionHealthStatus.splice(idx, 1);
    } else {
        $scope.selectionHealthStatus.push(Value);
    }
};

现在,在检索数据时,我希望选中复选框。但现在它没有发生。

以下是我检索数据的方法

userPageService.getHealthStatus().then((data) => {
    data = data.data;
    $scope.formData = data;
});

如果我为$ scope.formData设置控制台,这就是我得到的。

participantIllnessAndDisability:"[1, 2, 3, 4]"

这里的participantIllnessAndDisability是一个选中了多个复选框的字段。现在我想要做的是在查看时添加数据后我想要选中所选的复选框。我从[1,2,3]中获取数据库中的数据format。数据库中字段participantIllnessAndDisability的数据类型为String。

2 个答案:

答案 0 :(得分:0)

在页面加载时,不会自动调用ng-checked上的函数。因此,它不会选中复选框。

您可以将ng-model或ng表达式分配给checked属性,并在数据加载时从控制器初始化它。

答案 1 :(得分:0)

更新

请试一试。

userPageService.getHealthStatus().then((data) => {
                 data = data.data;
                 $scope.formData = data;
                 $scope.HealthStatuses.forEach((o) => o.Selected = JSON.parse(data.participantIllnessAndDisability).includes(o.Value));
        });