我试图通过比较两个数组中的值来预先选择角度1.4中的复选框,但由于某种原因,我的逻辑不会忽略数组中的第一个项目。 我绑定到checkboxlist的模型如下所示:
$scope.weekDays = [{
name: "Monday",
value: false,
}, {
name: "Tuesday",
value: false,
}, {
name: "Wednesday",
value: false,
}, {
name: "Thursday",
value: false,
}, {
name: "Friday",
value: false,
}, ];
我从我的数据库收到的值是
'Monday,Tuesday,Thurdsay'
然后我将从db接收的值拆分为数组,如果两个数组中的days name匹配,我将值设置为true,检查复选框。
var PrefDays = 'Monday,Tuesday,Thursday';
var selected_pref_days = new Array();
selected_pref_days = PrefDays.split(',');
for(var i = 0; i < selected_pref_days.length; i++) {
console.log(selected_pref_days[i]);
angular.forEach($scope.weekDays, function (day) {
if (selected_pref_days[i] == day.name) {
day.value = true;
}
})
}
我希望$ scope.weekDays如下所示:
$scope.weekDays = [{
name: "Monday",
value: true,
}, {
name: "Tuesday",
value: true,
}, {
name: "Wednesday",
value: false,
}, {
name: "Thursday",
value: true,
}, {
name: "Friday",
value: false,
}, ];
相反,我总是将第一个值设为“false”。有人可以帮助我吗? 谢谢
答案 0 :(得分:1)
我找不到问题,但这是一个最适合我的解决方案(也很容易测试和调试)。很抱歉,我无法澄清您的情况,但至少您可以继续编写最终逻辑
$scope.weekDays = $scope.weekDays.map(d => {
d.value = selected_pref_days.indexOf(d.name) != -1;
return d;
})