Angularjs根据服务器响应更改复选框值
我有两组复选框,用户在其中选择自己的选项并将其作为字符串保存到数据库中 是否可以从服务器获取此字符串响应并将每个值设置回相应的复选框以保持选中状态Angularjs根据服务器响应更改复选框值,angularjs,checkbox,ionic-framework,Angularjs,Checkbox,Ionic Framework,我有两组复选框,用户在其中选择自己的选项并将其作为字符串保存到数据库中 是否可以从服务器获取此字符串响应并将每个值设置回相应的复选框以保持选中状态 <form class="list"> <ion-toggle toggle-class="toggle-balanced" ng-model="data.turnOnOff" ng-true-value="'On'" ng-false-value="'Off'" ng-change="data.showConfirm(d
<form class="list">
<ion-toggle toggle-class="toggle-balanced" ng-model="data.turnOnOff" ng-true-value="'On'" ng-false-value="'Off'" ng-change="data.showConfirm(data.turnOnOff)">Databases</ion-toggle>
<div class="spacer" style="height: 10px;"></div>
<ion-list ng-show="bd">
<ion-checkbox ng-repeat="(key, value) in db" ng-model=value.checked ng-change="checka()">{{ value.text }}</ion-checkbox>
</ion-list>
<div class="spacer" style="height: 10px;"></div>
<ion-toggle toggle-class="toggle-balanced" ng-model="data.escritorio" ng-true-value="'On'" ng-false-value="'Off'" ng-change="data.openEscritorio(data.escritorio)">Office</ion-toggle>
<div class="spacer" style="height: 10px;"></div>
<ion-list ng-show="officee">
<ion-checkbox ng-repeat="(key, value) in office" ng-model=value.checked>{{ value.text }}</ion-checkbox>
</ion-list>
<div class="spacer" style="height: 10px;"></div>
</form>
<div class="spacer" style="height: 10px;"></div>
<button style="color:#FFFFFF;" class="button button-balanced button-block" ng-click="insert()">Ok</button>
响应
checkedData = response.data[0].DATABASERESP;
"data":{"checkedData":"Firebird, MySQL, Oracle, Microsoft Excel, Microsoft Outlook, Microsoft PowerPoint, Microsoft Word","id":"1"}
我明白了,所以你可以试试这个:
var checkedData = response.data
checkedData.checkedData.forEach(function(checkedName) {
$scope.db.forEach(function(dbItem){
if(dbItem.text == checkedName) {
dbItem.checked = true;
}
})
$scope.office.forEach(function(officeItem){
if(officeItem.text == checkedName) {
officeItem.checked = true;
}
})
})
// if you do it in .then(function) or any async function you need to call
$scope.$apply() // to update checkboxes state
更新
您忘记将字符串拆分为数组:
checkedData.data.checkedData = checkedData.data.checkedData.split(', ');
现在我们可以做.forEach
函数了
我明白了,所以你可以试试这个:
var checkedData = response.data
checkedData.checkedData.forEach(function(checkedName) {
$scope.db.forEach(function(dbItem){
if(dbItem.text == checkedName) {
dbItem.checked = true;
}
})
$scope.office.forEach(function(officeItem){
if(officeItem.text == checkedName) {
officeItem.checked = true;
}
})
})
// if you do it in .then(function) or any async function you need to call
$scope.$apply() // to update checkboxes state
更新
您忘记将字符串拆分为数组:
checkedData.data.checkedData = checkedData.data.checkedData.split(', ');
现在我们可以做.forEach
函数了
jshiddle我不得不做一些更改,但根据Leguest的答案,我的最终结果是:
checkedData= response.data[0].DATABASERESP;
console.log(checkedData);
checkedData = checkedData.split(', ');
console.log(checkedData);
angular.forEach(checkedData, function(checkedName){
$scope.db.forEach(function(dbItem){
if(dbItem.text == checkedName) {
dbItem.checked = true;
}
});
$scope.office.forEach(function(officeItem){
if(officeItem.text == checkedName) {
officeItem.checked = true;
}
});
});
我不得不做出一些改变,但根据Leguest的回答,我的最终结果是:
checkedData= response.data[0].DATABASERESP;
console.log(checkedData);
checkedData = checkedData.split(', ');
console.log(checkedData);
angular.forEach(checkedData, function(checkedName){
$scope.db.forEach(function(dbItem){
if(dbItem.text == checkedName) {
dbItem.checked = true;
}
});
$scope.office.forEach(function(officeItem){
if(officeItem.text == checkedName) {
officeItem.checked = true;
}
});
});
我找不到在控制器代码中存储字符串响应的变量的位置。另外,请提供字符串响应示例。@Leguest-sorry。请阅读编辑后的问题当你问一个由你的代码引起的问题时,如果你使用尽可能少的代码仍然产生同样的问题,你会得到更好的答案。请参阅。我找不到在控制器代码中存储字符串响应的变量。另外,请提供字符串响应示例。@Leguest-sorry。请阅读编辑后的问题当你问一个由你的代码引起的问题时,如果你使用尽可能少的代码仍然产生同样的问题,你会得到更好的答案。看,它几乎工作得很好。它给了我SyntaxError:JSON.parse行中位置0处的JSON中意外的标记F。如果checkedData=response.data,我可以获取对象;是的,我写这行是为了以防万一,你可以很容易地摆脱它。我更新了我的answerTypeError:无法读取checkedData.checkedData.forEach(函数(checkedName)行上未定义的属性'forEach'。这是我得到的响应:[{“ID”:“1”,“DATABASERESP”:“Firebird,MongoDB,Open Office”}]我尝试了angular.forEach(checkedData,函数(checkedName)但复选框没有改变。它几乎工作正常。它给了我SyntaxError:JSON.parse行中位置0处的意外标记F。如果checkedData=response.data,我可以获取对象;是的,我写这行只是为了以防万一,您可以轻松摆脱它。我更新了answerTypeError:无法读取未定义的属性“forEach”在checkedData.checkedData.forEach(函数(checkedName)行上,这是我得到的响应:[{“ID”:“1”,“DATABASERESP”:“Firebird,MongoDB,Open Office”}]我尝试了angular.forEach(checkedData,函数(checkedName))但复选框没有更改。