Javascript 在列上使用ng repeat时如何更改表的行';td';(如果可能的话)

Javascript 在列上使用ng repeat时如何更改表的行';td';(如果可能的话),javascript,angularjs,angularjs-ng-repeat,ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,Ng Repeat,我正在创建一个表。首先,我一行有7列(星期日、星期一……)。 现在在tbody的行中,我将列重复为天(我有30天)。 这是重复所有的30项在单一(如我们所知)。 所以我想要的是,我只需要那一行正文的前七项,然后下一行的下七项,依此类推。。 解决方案会有帮助吗? 这是我的标记 <table class="table table-bordered"> <thead> <th>Sunday</th> <th>Monday<

我正在创建一个表。首先,我一行有7列(星期日、星期一……)。 现在在tbody的行中,我将列重复为天(我有30天)。 这是重复所有的30项在单一(如我们所知)。 所以我想要的是,我只需要那一行正文的前七项,然后下一行的下七项,依此类推。。 解决方案会有帮助吗? 这是我的标记

<table class="table table-bordered">
<thead>
    <th>Sunday</th>
    <th>Monday</th>
    <th>Tuesday</th>
    <th>Wednesday</th>
    <th>Thursday</th>
    <th>Friday</th>
    <th>Saturday</th>                                
</thead>
<tbody>
    <td ng-repeat="day in staticEvents"><span>{{day.title}}</span></td>
</tbody>

星期日
星期一
星期二
星期三
星期四
星期五
星期六
{{day.title}

$scope.staticEvents是一个包含30个对象(API响应)的数组。

我创建了一个小提琴,希望能对您有所帮助。您可以通过$index来实现这一点

    <div data-ng-app="" data-ng-init="days=['1','2','3','4','5','6','7','8','9','10','11','..']" class="container">
  <table class="table table-bordered">
    <thead>
      <th>Sunday</th>
      <th>Monday</th>
      <th>Tuesday</th>
      <th>Wednesday</th>
      <th>Thursday</th>
      <th>Friday</th>
      <th>Saturday</th>
    </thead>
    <tbody>
      <tr ng-repeat="day in days" ng-if="$index % 7 == 0">
        <td class="col">{{days[$index]}}</td>
        <td class="col">{{days[$index + 1]}}</td>
        <td class="col">{{days[$index + 2]}}</td>
        <td class="col">{{days[$index + 3]}}</td>
        <td class="col">{{days[$index + 4]}}</td>
        <td class="col">{{days[$index + 5]}}</td>
        <td class="col">{{days[$index + 6]}}</td>

      </tr>
    </tbody>
  </table>

</div>

星期日
星期一
星期二
星期三
星期四
星期五
星期六
{{days[$index]}
{{天[$index+1]}
{{天[$index+2]}
{{天[$index+3]}
{{天[$index+4]}
{{天[$index+5]}
{{天[$index+6]}

我建议您稍微更改一下数据结构。对于一个简单的数组,通过ng if或ng开关的一次迭代很难生成多行表。 此外,通过这种数据结构设计,您将始终拥有周日1号、周一2号

试着制作二维数组,在那里你可以准备你的“月份”,然后通过两次ng重复。比如:

控制器:

$scope.month = makeMonth($scope.staticEvents, 3);

function makeMonth(days, firstIndex) {
// days[] - array of days in month 
//fisrstIndex - index of the first day in month: 0=Sunday, ..., 6=Saturday
    if (!angular.isArray(days) || firstIndex < 0 || firstIndex > 6) {
        return [];
    }
    var month = [];
    var row = [];
    for (i=0; i < days.length + firstIndex; i++) {
        var day = {
            title: ""
        };
        if (i >= firstIndex) {
            day = days[i - firstIndex];
        }
        row.push(day);
        if (i % 7 === 6) {
            month.push(row);
            row = [];
        }
    }
    if (row != []) {
        month.push(row);
    }
    return month;
}
$scope.month=makeMonth($scope.staticEvents,3);
函数makeMonth(天,第一个索引){
//天数[]-月内天数数组
//FIRSTINDEX-当月第一天的指数:0=周日,…,6=周六
如果(!angular.isArray(天)| | firstIndex<0 | | firstIndex>6){
返回[];
}
var月=[];
var行=[];
对于(i=0;i=firstIndex){
天=天[i-第一索引];
}
行。推(天);
如果(i%7==6){
月。推(行);
行=[];
}
}
如果(行!=[]){
月。推(行);
}
返回月份;
}
模板:

<table class="table table-bordered">
    <thead>
        <th>Sunday</th>
        <th>Monday</th>
        <th>Tuesday</th>
        <th>Wednesday</th>
        <th>Thursday</th>
        <th>Friday</th>
        <th>Saturday</th>                                
    </thead>
    <tbody>
        <tr ng-repeat="row in month">
            <td ng-repeat="day in row"><span>{{day.title}}</span></td>
        </tr>
    </tbody>
</table>

星期日
星期一
星期二
星期三
星期四
星期五
星期六
{{day.title}

为什么不将
staticEvents
转换为长度为7的数组?这就是我现在正在做的。我只是想检查angularjs是否已经有了这个场景的任何指令。如果有,为什么要在我的控制器中编写一个冗长的代码。可能有一些日历插件,但我认为没有内置任何东西。你的答案看起来很好,但我的angularjs版本1.3无法理解。我已经在1.5版本上创建了一个简单的应用程序,工作正常。但我的主要项目(应用程序)是1.3。所以我需要更新angular.min.js文件。你能给我推荐一些使用angularjs 1.3的文件吗?我知道问题出在哪里了。这是我的数据。谢谢Junaid bhai。你有什么具体的错误吗?我创建了一个更旧的版本1.0.3,它似乎工作得很好:尝试一下这个数据['null',WeeklyOff','General','General','General','General','WeeklyOff','General','General','General','General','General','General','General','WeeklyOff','General','General','General','WeeklyOff','General','General','WeeklyOff','WeeklyOff','Ge','我显示了一些重复属性错误,所以我用ng repeat=“day in days”替换为ng repeat=“day in days track by$index”。现在它可以正常工作了。Thanx请放心,这个数据函数不起作用,因为从您的问题来看,它似乎使用了一个带有属性“title”的对象数组。