【问题标题】:How can I Retrieve Dynamic Array Data in a nested ng-repeat?如何在嵌套的 ng-repeat 中检索动态数组数据?
【发布时间】:2015-12-05 11:07:08
【问题描述】:

我正在处理与字符串和数组嵌套得很深的 json 数据,我每天都在尝试推送 truefalse 值,我在这里这样做了

没有嵌套数组(codepen1)


html

  <ion-toggle ng-repeat="item in product"
                    ng-model="item.checked" 
                    ng-checked="item.checked">
          {{item}} 
        </ion-toggle> 

js

 $scope.eventDaysList = [
{ day: "Monday" },
{ day: "Tuesday"},
{ day: "Wednesday" },
 ....
  ];


$scope.product = $scope.eventDaysList;
    var checked = false;
    $scope.product.forEach(function (newCheckItem) {
    newCheckItem.checked = checked;
});

工作 :) 酷。

但是,当值(小时)像这样嵌套时,我遇到了困难。

带有嵌套数组(codepen2)


嵌套小时看起来像这样

$scope.product.value.forEach(function (newCheckItem) { 

<ion-toggle 
                  ng-repeat="(key,value) in product" 
                  ng-model="value.checked" 
                  ng-checked="value.checked" 
                   ng-hide="key == all_year, season_from, season_to">
        {{ key }} at {{ value }} 
      </ion-toggle>

js

    $scope.eventDaysList = {
    "event_offering": {
      "all_year": true,
      "season_from": "01/01",
      "season_to": "12/31",
      "monday": [
        "08:30am"
      ],
      "tuesday": [
        "08:30am"
      ],
      "wednesday": [
        "08:00am", "09:30am", "01:30pm"
      ],
      "thursday": [
        "08:30am", "09:30am"
      ],
      "friday": [
        "08:30am"
      ],
      "saturday": [],
      "sunday": []
    }
   };

       $scope.product= $scope.eventDaysList.event_offering
       var checked = false;
        //   $scope.product.forEach(function (newCheckItem) {
        //$scope.product.value.forEach(function (newCheckItem) {
         //   newCheckItem.checked = checked;
         //   });*/

所以我的问题是:

如何将 动态数组 中的 嵌套值 检索为单独的对象,即将 weds 切换为三个切换,同时仍保持结构的其余部分?我该如何做到这一点并将我的三个静态键 all_year, season_from, season_to 隐藏在 ng-repeat 中?

【问题讨论】:

    标签: arrays angularjs json nested angularjs-ng-repeat


    【解决方案1】:

    ng-repeat 不打算做嵌套集合。我建议你想办法让你的 event_offering 变平。你可以做这个客户端,但我建议扁平化这个调用服务器端。

    我确实解决了您的问题客户端,您可以查看此代码笔:

    http://codepen.io/anon/pen/eJYVzx

    我精简了代码以专注于您想要完成的任务。我还在速记 foreach 循环中添加了 lodash。我希望这会有所帮助。

    JS:

      $scope.events = [];
    
    
    $scope.eventDaysList = {
        'eventOfferingRevised' : [
          {'name': 'all_year', 'checked': true}
          ,{'name': 'monday', 'time': [{'name': '8:30', 'checked': true},{'name': '9:30', 'checked': true}] }
        ]
      };
    
      $scope.products = $scope.events;
    
    
    _.each($scope.eventDaysList.eventOfferingRevised, function(eventOffering){
      if(eventOffering.time){
        _.each(eventOffering.time, function(eventTime) {
          eventTime.name = eventOffering.name + '-' + eventTime.name;
          $scope.events.push(eventTime);
        });
      } else {
        $scope.events.push(eventOffering);
      }
    });
    

    HTML:

    <ion-toggle 
                  ng-repeat="product in products" 
                  ng-model="product.checked" 
                  ng-checked="product.checked" 
                   ng-hide="key == all_year, season_from, season_to">
        {{product.name}}
      </ion-toggle>
    

    【讨论】:

    • 这很有帮助,但是我无法更改第二个 codepen 中的 json 对象结构,因为它将是通过 http 传入的 json。 lodash 虽然是一种对此很有帮助的资源,但我仍然习惯它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多