javascript - 自动选择并收集数组中的复选框值

标签 javascript angularjs checkbox

我在设置(检查)和从 View 中获取数据数组到模型时遇到问题。让我用代码进一步解释我的问题。

这是我的 Controller ,我在其中提供工作日

$scope.workDays = [
                {name: 'Monday', value: 1},
                {name: 'Tuesday', value: 2},
                {name: 'Wednesday', value: 3},
                {name: 'Thursday', value: 4},
                {name: 'Friday', value: 5},
                {name: 'Saturday', value: 6},
                {name: 'Sunday', value: 7},
            ]
$scope.selectedDays = "1,3,4,6";

然后我在 HTML 中使用 ng-repeat 渲染这些复选框

<label>Working days</label>
<div class="checkbox">
     <label ng-repeat="w in workDays" >
            <input type="checkbox" ng-value="w.value" ng-checked="selectedDays" >
            {{w.name}}&nbsp;&nbsp;
     </label>
</div>

1.问题:如何根据值 $scope.selectedDays 检查复选框?

我遇到的第二个问题是 一旦我尝试获取新的选定值,我总是得到空数组

所以我的 Controller 看起来像这样

$scope.myData = [];
console.log($scope.myData);

然后我选择并取消选择一些复选框,但是控制台日志报告空数组[]

希望大家能帮帮我。如果您需要任何其他信息,请告诉我,我会提供。谢谢!

最佳答案

向 Controller 添加一个函数并调用它来初始化模型 ($scope.myData),如下所示:

Controller

$scope.myData = [];
function getMyData() {
   angular.forEach($scope.workDays, function(day) {
     var newDay = {
       name: day.name,
       selected: $scope.selectedDays.indexOf(day.value) >= 0
     };
     $scope.myData.push(newDay);
   });
}

getMyData();

然后您可以像这样简化标记:

标记

<div class="checkbox">
  <label ng-repeat="w in myData">
    <input type="checkbox" ng-model="w.selected"> {{w.name}}&nbsp;&nbsp;
  </label>
</div>

你可以看到这个工作here

关于javascript - 自动选择并收集数组中的复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38131240/

相关文章:

javascript - 如何通过ajax在单个对象中发送多个复选框值

angularjs - 如何将 `link` 函数替换为 Angular 2 组件中的目标 DOM 元素

javascript - AngularJs 引用错误 : angular is not defined

javascript - 复选框控制单选选中/未选中

php - 从 JSON API 获取数据到 JS 或 jquery 变量

javascript - 单击图标时,Angular js 和 bootstrap ui 日期选择器无法在 Chrome 中打开

javascript - react setState : using checkbox to change boolean value

javascript - 如何转换值表以将其集成到 http.get 中

javascript - 如何使用 ajax 和 jquery 更改页面的 html?

javascript - 如何获取数组数组的索引?