我正在为我的应用程序使用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。
答案 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));
});