2016-02-26 70 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