2016-02-26 66 views
1

内容我有内部的X NG-重复另一个NG重复列表,像这样:AngularJS:如何洗牌/合并来自不同NG重复

<div ng-repeat="object in objects"> 

    <div ng-repeat="item in object"> 
    <a href="{{url}}"><p>{{title}}</p></a> 
    </div> 
    <div ng-repeat="item in object"> 
    <a href="{{url}}"><p>{{title}}</p></a> 
    </div> 
    <div ng-repeat="item in object"> 
    <a href="{{url}}"><p>{{title}}</p></a> 
    </div> 

</div> 

的数据来自一个包含其他JSON对象对象,它包含的内容,我呈现在NG-重复,像这样:

var data = [ 
    {Object 
     { subObject {entries: 
        {title:'he', desc:'for male'} 
        } 
     } , 
     { subObject {entries: 
        {title:'she', desc: 'for female'}, 
          } 
     } , 
     { subObject {entries: 
        {title: 'I', desc: 'for me'} 
           } 
     } 
    } 

我试图使洗好的所有<div ng-repeat="item in object">并不会改变JSON对象的内容。我尝试了一些洗牌功能,如下面的(我发现它在SO):

// -> Fisher–Yates shuffle algorithm 
var shuffleArray = function(array) { 
    var m = array.length, t, i; 
console.log('executing'); 
    // While there remain elements to shuffle 
    while (m) { 
    // Pick a remaining element… 
    i = Math.floor(Math.random() * m--); 

    // And swap it with the current element. 
    t = array[m]; 
    array[m] = array[i]; 
    array[i] = t; 
    } 

,并要求它像这样shuffle(objects);在控制器上,但很明显,我只得到了块对象中的主要对象随机的,而不是内容本身。问题是我不知道如何“分解”对象或将内部对象合并为一个对象,以便对其进行洗牌。

我也试着在ng-repeat数据创建之后将其重新洗牌,但是我找不到合并ng-repeat数据的方法。我只是在学习AngularJS,所以我不知道这是否是更好的方法来完成我所需要的。这应该怎么做?感谢; d

+0

可以为您的角度阶段之前将它洗?在创建JSON对象之前? – ewizard

+0

嗯,不是因为那会让我改变整个项目的方法。最好保持JSON对象 - 我将用这个细节更新这个问题。 – ohmmho

+0

有没有相关的角码?你可以在角度JavaScript中拖动它,然后显示它吗? – ewizard

回答

0

如果我明白你的问题,你需要这样的:

angular.module("app", []).controller("BarCtrl", function ($scope) { 

    var fullData = { 
    "responseData": 
     { "object": 
       { 
        "url":"http://agenciabai.es/category/university/feed/", 
        "title":"BAIANAI", 
        "link":"http://agenciabai.es", 
        "entries": 
         [ 
          { 
           "title":"¡Hora de Aventuras!", 
           "link": "http://agenciabai.es/hora-de-aventuras/", 
           "publishedDate":"Fri, 26 Feb 2016 09:50:16", 
           "contentSnippet": "text. " 
          }, 
          { 
           "title":"Lo mejor de Shijue", 
           "link":"http://agenciabai.es/lo-mejor-de-shijue/", 
           "publishedDate":"Wed, 27 Jan 2016 04:07:23 ", 
           "contentSnippet": "text. " 
          } 
         ] 
       } 
     }, 
    "responseStatus": 200 
}; 

var data = fullData.responseData.object.entries 


    $scope.arrTitles = _.map(data, 'title'); 

    $scope.arrDesc = _.map(data, 'link'); 

    $scope.shuffleTitles = _.shuffle($scope.arrTitles) 
    $scope.shuffleDesc = _.shuffle($scope.arrDesc) 

    $scope.shuffleData = _.zip($scope.shuffleTitles, $scope.shuffleDesc); 


}); 

我这样做的jsfiddle展示它是如何工作的:

https://jsfiddle.net/melaspela80/kxb9agqd/4/

+0

实际上我的对象看起来像这样: 'VAR数据= [ {对象 {子对象{条目: \t \t \t {标题:”他”,说明: '男性'} } }, {子对象{条目: \t \t \t {标题: '她',说明: '女性'}, } }, {子对象{条目: \t \t \t {title:'I',desc:'fo我' } } }' 所以你的小提琴不适合。对不起我的坏解释,我是新手和解释问题本身就是我发现最难的。我也更新了关于该问题的对象。 – ohmmho

+0

这不是一个有效的json数据,你能添加一个真正的json响应吗? – dobleUber

+0

想象的要多 “对象” 项 “responseData” 里面: '{ “responseData”: \t \t { “对象”: \t \t \t { “URL”:“http://agenciabai.es/category/university/feed/“ \t \t \t ”标题“: ”BAIANAI“, \t \t \t ”链接“: ”http://agenciabai.es“, \t \t \t ”条目“:[ \t \t \t \t {” 标题“:”Hora de Aventuras!“, \t \t \t \t “链接”: “http://agenciabai.es/hora-de-aventuras/”, \t \t \t \t “publishedDate”: “星期五,2016年2月26日9时50分16秒”, \t \t \t \t“contentSnippet”:text。 “}, \t \t \t \t {” 标题 “:” 螺MEJOR德始觉 “ \t \t \t \t ”链接“:” http://agenciabai.es/lo-mejor-de-shijue/“, \t \t \t \t “publishedDate”: “星期三,2016年1月27日4时07分23秒”, \t \t \t \t “contentSnippet”:文本。 }, \t \t] \t}} , “responseStatus”:200})' – ohmmho