无法在AngularJS中创建动态对象数组

时间:2014-09-19 09:34:02

标签: javascript jquery html css angularjs

以下是我尝试在按钮click上创建(可用)的数组类型 -

    [
        {DATE, morning_VALUE, night_VALUE},
        {DATE, morning_VALUE, night_VALUE},
        {DATE, morning_VALUE, night_VALUE},
        {DATE, morning_VALUE, night_VALUE},
        {DATE, morning_VALUE, night_VALUE},
        {DATE, morning_VALUE, night_VALUE},
        {DATE, morning_VALUE, night_VALUE},
    ]
    morning_VALUE -> true/false
    night_VALUE -> true/false

以下是我的plnkr代码 - PLNKR

HTML -

<div class="col-lg-3">
  <ul>
    <li ng-repeat="a in weeklist" style="margin-bottom: 3px;">
      <button ng-click="showWeekDays(a[0], a[1])" 
              style="width:178px;" 
              class="btn bg-blue">
        {{a[0] | date: 'shortDate'}} - {{a[1] | date: 'shortDate'}}
      </button>
    </li>
  </ul>
</div>
<table>
  <tr ng-repeat-start="a in sevenWeekDayArr">
    <td>
      {{a | date: 'shortDate'}}
    </td>
    <td>
      <input type="hidden" 
             ng-model="avail[$index].currDate" 
             ng-init="avail[$index].currDate = a" />
    </td>
  </tr>
  <tr>
    <td>Morning:</td>
    <td>
      <input type="checkbox" ng-model="avail[$index].morning" />
    </td>
  </tr>
  <tr ng-repeat-end="">
    <td>Night:</td>
    <td>
      <input type="checkbox" ng-model="avail[$index].night" />
    </td>
  </tr>
</table>
<div>
  <button ng-click="addTime(avail)">Click</button>
</div>

让我知道我在这里做错了什么,我相信我需要在案例中使用push,但不知道如何在我的场景中使用它。

2 个答案:

答案 0 :(得分:3)

您尝试将对象绑定到没有特定值的模型对象。

在script.js

的第17行之后尝试此操作
$scope.avail.push({currDate: "", morning:false, night:false}); 

这将初始化该对象数组,然后您可以按照您希望的方式对其进行修改

答案 1 :(得分:0)

<table>
            <tr ng-repeat-start="a in sevenWeekDayArr">
                <td>
                    {{a | date: 'shortDate'}}
                </td>
                <td>
                    <input type="hidden" ng-model="a.currDate" />
                </td>
            </tr>
            <tr>
                <td>Morning:</td>
                <td><input type="checkbox" ng-model="a.morning" /></td>
            </tr>
            <tr ng-repeat-end="">
                <td>Night:</td>
                <td><input type="checkbox" ng-model="a.night" /></td> 
            </tr>
</table>
<div>
    <button ng-click="addTime()">Click</button>
</div>

$scope.addTime = function(){
    angular.forEach($scope.sevenWeekDayArr, function(item){
      $scope.avail.push(item);
    });
    console.log($scope.avail);
};