Javascript 围绕作用域中的每6个对象创建一个包含div

Javascript 围绕作用域中的每6个对象创建一个包含div,javascript,angularjs,Javascript,Angularjs,我有一个$scope.movies,里面有6个对象。在我的模板上,我使用ng repeat来显示内容。看起来像这样 $scope.movies = [ { title: 'Star Wars', release_date: '10-11-2015', movie_id: '3381', link: 'ePbKGoIGAXY' }, { title: 'Spectre', release_date: '25-12-2015', mov

我有一个
$scope.movies
,里面有6个对象。在我的模板上,我使用ng repeat来显示内容。看起来像这样

$scope.movies = [
  {
    title: 'Star Wars',
    release_date: '10-11-2015',
    movie_id: '3381',
    link: 'ePbKGoIGAXY'
  }, {
    title: 'Spectre',
    release_date: '25-12-2015',
    movie_id: '3371',
    link: 'KlyknsTJk0w'
  }, {
    title: 'Revenant',
    release_date: '02-03-2016',
    movie_id: '3361',
    link: 'nyc6RJEEe0U'
  },
    {
    title: 'Star Wars',
    release_date: '10-11-2015',
    movie_id: '3351',
    link: 'zSWdZVtXT7E'
  }, {
    title: 'Spectre',
    release_date: '25-12-2015',
    movie_id: '3441',
    link: 'ePbKGoIGAXY'
  }, {
    title: 'Revenant',
    release_date: '02-03-2016',
    movie_id: '3331',
    link: 'Lm8p5rlrSkY'
  }
];
movie\u容器
div是通过执行
“ng repeat”=“movie in movies”
创建的


我会在控制器中分割电影,然后在组上循环,这样我就不需要在视图中添加太多逻辑。 控制器:

var i,j,temparray,chunk = 3, movieGroups=[];
for (i=0,j=movies.length; i<j; i+=chunk) {
    temparray = movies.slice(i,i+chunk);
    movieGroups.push(temparray);
}
$scope.movieGroups = movieGroups;
var i,j,temparray,chunk=3,movieGroups=[];

对于(i=0,j=movies.length;i我将在控制器中分割电影,然后在组上循环,因此我不需要在视图中使用太多逻辑。 控制器:

var i,j,temparray,chunk = 3, movieGroups=[];
for (i=0,j=movies.length; i<j; i+=chunk) {
    temparray = movies.slice(i,i+chunk);
    movieGroups.push(temparray);
}
$scope.movieGroups = movieGroups;
var i,j,temparray,chunk=3,movieGroups=[];

对于(i=0,j=movies.length;i您可以编写一个函数,将它们拆分为一个对象数组,这将使您更加轻松。请参见此处

小提琴示例:

大概是这样的:

$scope.sortMoviesForWrapper = function() {
  $scope.sortedMovies = [];

  while ($scope.movies.length > 0)
    $scope.sortedMovies.push({"movies" : $scope.movies.splice(0, 3)});
};

//invoke function immediately (you can change when you do this if you need)
$scope.sortMoviesForWrapper();
我使用函数
sortMoviesForWrapper
将电影转换为
sortedMovies
,并立即调用它,然后在sortedMovies上使用repeat,如下所示:

<div class="movie_wrap" ng-repeat="movieWrappers in sortedMovies">
  <div class="movie_container" ng-repeat="movie in movieWrappers.movies">
  {{movie.link}}
  </div>
</div> 

{{movie.link}
我使用了
movie.link
,这样你就可以看到它们是独一无二的。这是基本的想法。你可以修改你认为合适的方式。我创建了一个数组,数组中有包含“movies”的对象你不必使用对象,也不必使用电影的键,我个人更喜欢这样使用它


请记住,如果您的
$scope.movie
对象发生更改,您将不得不重新运行此函数。希望这会有所帮助。

您可以编写一个函数,将它们拆分为一组对象,这将使您更轻松。请参见此处

小提琴示例:

大概是这样的:

$scope.sortMoviesForWrapper = function() {
  $scope.sortedMovies = [];

  while ($scope.movies.length > 0)
    $scope.sortedMovies.push({"movies" : $scope.movies.splice(0, 3)});
};

//invoke function immediately (you can change when you do this if you need)
$scope.sortMoviesForWrapper();
我使用函数
sortMoviesForWrapper
将电影转换为
sortedMovies
,并立即调用它,然后在sortedMovies上使用repeat,如下所示:

<div class="movie_wrap" ng-repeat="movieWrappers in sortedMovies">
  <div class="movie_container" ng-repeat="movie in movieWrappers.movies">
  {{movie.link}}
  </div>
</div> 

{{movie.link}
我使用了
movie.link
,这样你就可以看到它们是独一无二的。这是基本的想法。你可以修改你认为合适的方式。我创建了一个数组,数组中有包含“movies”的对象你不必使用对象,也不必使用电影的键,我个人更喜欢这样使用它



请记住,如果您的
$scope.movie
对象发生更改,您将不得不重新运行此函数。希望这会有所帮助。

现在您正在重复相同的
$scope.movies
每次重复,我假设它们最终不会都相同?如果分开,它们会恰好位于一个对象中吗?能否显示您的对象阵列是吗?@MikeSav我已经更新了我的问题。@Ajmajma我不知道你的意思。我的意思是现在你的代码对我来说没有意义,因为你有6个重复在重复同一个数组。你的意思是有1个重复在这个数组上重复一次吗?现在你在每个重复中重复相同的
$scope.movies
,我假设它们最终会不一样吗?如果分开,它们会碰巧都在一个对象中吗?你能展示一下你的对象数组吗?@MikeSav我已经更新了我的问题。@Ajmajma我不知道你的意思。我的意思是,现在你的代码对我来说没有意义,因为你有6次重复相同的数组。你的意思是有1次重复吗t这只会遍历这个数组一次?为什么要放置$scope.sortMoviesForWrapper()呢;在作用域上?您不想在视图中触摸它。@user874774我不认为用户希望如何使用它,可能的数据可能会更改,并且他们希望访问它。除非电影数组从未更改,否则我猜用户将在函数中需要它。可以相应地更改,因为这是一个示例。为什么要放置$scope.sortMoviesForWrapper();在作用域上?您不想在视图中触摸它。@user874774我不假设用户想要如何使用它,可能的数据可能会更改,并且他们想要访问它。除非电影数组从未更改,否则我猜用户将在函数中需要它。可以根据示例进行相应更改。谢谢!如果您能解释javascript abit学习一些东西对我很有帮助。请查看Array.Prototype.slice的文档。我们使用块步骤循环原始数组。在每个循环中,我们从原始数组创建一个temparray。这就是我们所说的电影组。谢谢!如果你能解释一下javascript,这对m非常有帮助e来学习一些东西。在这里查看Array.prototype.slice的文档。我们使用块步骤循环原始数组。在每个循环中,我们从原始数组创建一个temparray。这就是我们所说的电影组。