2016-04-03 51 views
0

我有這樣的基礎上,ydn-db packageNG重複不合並陣列工作物

var db = new ydn.db.Storage('Trans'); 

    var iter_supplier = new ydn.db.IndexValueIterator('stops', 'stop_id'); 
    var iter_part = new ydn.db.IndexValueIterator('times', 'stop_id'); 
    var req = db.scan(function(keys, values) { 
     var SID = keys[0]; 
     var PID = keys[1]; 
     // console.log(SID, PID); 
     if (!SID || !PID) { 
      return []; // done 
     } 
     var cmp = ydn.db.cmp(SID, PID); // compare keys 
     if (cmp == 0) { 
      // console.log(values[0], values[1]); 
      var merged = angular.extend(values[0], values[1]); 
      console.log(merged); 

      $scope.results = merged; 
      // $scope.$apply(function() { 
      //  $scope.results = merged; 
      // }); 

      return [true, true]; // advance both 
     } else if (cmp == 1) { 
      return [undefined, SID]; // jump PID cursor to match SID 
     } else { 
      return [PID, undefined]; // jump SID cursor to match PID 
     } 
    }, [iter_supplier, iter_part]); 

控制檯瀏覽器的結果看起來是這樣的: enter image description here

而且我通過與試圖循環ng-repeat如下:

<div class="medium-6 columns" ng-repeat="result in results"> 
     <div class="card hoverable"> 
      <div class="content"> 
       <span class="title">{{ result }}</span><small class="float-right">{{result.stop_id}}</small> 
       <div class="divider"></div> 
       <p>Times: {{ result.arrival_time }}</p> 
      </div> 
     </div> 
    </div> 

我用ng-repeat在html中什麼也沒得到。它似乎沒有循環。我究竟做錯了什麼?

+0

你在哪裏告訴angular.extend存儲這些擴展值?這是'angular.extend'的文檔:'angular.extend(dst,src);'。我沒有看到你將它們存儲到'merge'中的位置。 – theblindprophet

+0

@theblindprophet用完整代碼更新。 – Rexford

回答

0

merged似乎是一個單一的對象,每次迭代都會打印出來。你的意思是將results設置爲單個對象,還是要尋找$scope.results.push(merged)之類的東西來代替構建結果列表?

它看起來像你想要一個列表而不是一個單一的對象,但如果你不這樣做,而results將會是一個單一的對象/字典,你可以使用ng-repeat="(key, value) in results"來循環使用鍵和值。