javascript - AngularJS ng-repeat 了解如何查找复选框值

标签 javascript json angularjs checkbox

第一次接触 Angular :)

我有一个页面,显示 JSON 对象中的项目列表。该 Json 对象中有一个日期数组

$obj = [
    {
        id: '1',
        GoalName: 'Smoke Less',
        StartDate: '9/1/2015',
        EndDate: '9/30/2015',
        GoalType: "positive",
        Category: "Health",
        Weight: "3",
        TimesPerWeek: 4,
        Dates: {
            "09/11/2015": 0,
            "09/10/2015": 1,
            "09/08/2015": 1
        }
    }

我用 ng-repeat 来展示数组中的项目,但我很难理解如何控制复选框。当我呈现项目时,我在屏幕上设置一个日期,我想检查数组以查看该日期是否存在,如果存在,则检查复选框。此外,如果用户随后单击该复选框,则会更新该项目。我隐约明白我需要制作复选框的模型,但不完全理解它是如何工作的。

app.controller('TrackGoals', function ($scope) {
    $scope.today = Date.today();
});

<ul class="list" id="thehabits" ng-repeat="goal in goals">
    <li class="expanded-cell">
        <div class="pull-right form-group cell-content">
            <label>
                <input type="checkbox" class="option-input checkbox" ng-model="ids[goal.dates.id].value">
            </label>
        </div>
        <div class="cell-content">
            <span id="habittext" class="title">{{ goal.GoalName }} </span>
        </div>
    </li>
</ul>

最佳答案

试试这个:

var app = angular.module('myApp', []);
app.controller('TrackGoals', function($scope) {
  $scope.goals = [{
    id: '1',
    GoalName: 'Smoke Less',
    StartDate: '9/1/2015',
    EndDate: '9/30/2015',
    GoalType: "positive",
    Category: "Health",
    Weight: "3",
    TimesPerWeek: 4,
    Dates: {
      "09/11/2015": 0,
      "09/10/2015": 1,
      "09/08/2015": 1
    }
  }, {
    id: '2',
    GoalName: 'Smoke Less',
    StartDate: '9/1/2015',
    EndDate: '9/30/2015',
    GoalType: "positive",
    Category: "Health",
    Weight: "3",
    TimesPerWeek: 4,
    Dates: {}
  }];
  $scope.setCheckboxVal = function(val) {
    var arr = [];
    for (var i in val) {
      if (val.hasOwnProperty(i)) {
        arr.push({
          date: i,
          value: val[i]
        });
      }
    }
    return !!arr.length;
  };
  $scope.showData = function() {
    console.log(JSON.stringify($scope.goals));
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js"></script>
<!DOCTYPE html>
<html ng-app='myApp'>

<head>
  <meta charset="UTF-8">
  <title>Test</title>
  <script type="text/javascript" src="jquery.min.js"></script>
  <script type="text/javascript" src="angular.min.js"></script>
</head>

<body ng-controller="TrackGoals">
  <ul class="list" id="thehabits" ng-repeat="goal in goals">
    <li class="expanded-cell">
      <div class="pull-right form-group cell-content">
        <label>
          <input type="checkbox" class="option-input checkbox" ng-model="goal.checkboxVal" ng-init="goal.checkboxVal=setCheckboxVal(goal.Dates)">
        </label>
      </div>
      <div class="cell-content">
        <span id="habittext" class="title">{{ goal.GoalName }} </span>
      </div>
    </li>
  </ul>
  <button type="button" ng-click="showData()">Show data</button>
</body>

</html>

关于javascript - AngularJS ng-repeat 了解如何查找复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32492259/

相关文章:

php - 使用 json 在数据库上插入多个复选框

javascript - Firebase,将快照数据存储到数组变量

javascript - toLocaleDateString 从意大利语转换为英语

javascript - 根据文本换行和窗口宽度更改 CSS 类(Jquery 或 JavaScript)

java - 使用 JSON (GSON) 将 PHP 关联数组传输到 Java Map<String, Double>

javascript - 使用 Google Apps 脚本将 HTTPPost 发送到 GCM 时出现错误=缺少注册

javascript - 我应该在 Node.js 中使用哪种客户端模板?

javascript - 带有 ConfirmDialog 的 PrimeNg TabView

angularjs - UI 路由器,在服务中使用 stateparams

javascript - Angular 运行循环