2017-06-30 1 views
0

の値を変更し、そう..私は事をし[並べ替え新鮮ではない、私はすでに、同じオブジェクトのキーでフィルタリングすることを、私はいくつかのオブジェクトの順序を変更したいキー

..

/** 
    * Direction 
    * @param blockIndex 
    * @param direction 
    */ 
    $scope.moveBlock = function(blockIndex,direction){ 
     var block = $scope.data.blocks[blockIndex]; 

     if(direction === 'up'){ 
      var newOrder = $scope.data.blocks[blockIndex-1]; 
      if(newOrder){ 
       newOrder.order = newOrder.order + 1; 
       block.order = block.order - 1; 
      } 
      return; 
     } 

     if(direction === 'down'){ 
      var newOrder = $scope.data.blocks[blockIndex+1]; 
      if(newOrder){ 
       newOrder.order = newOrder.order - 1; 
       block.order = block.order + 1; 
      } 
     } 
    }; 

とHTML ..

<div class="block__wrapper" ng-repeat="(blockIndex, block) in data.blocks | toArray:false | orderBy: 'block.order' : false">{{block.order}}</div> 

しかしdoesntの仕事、順序値の変化が、

012 ... [並べ替え基準はその値を更新するか聞いていないフィルタと思われます

アイデア?このよう

私は、この問題を解決する各オブジェクトインデックスの内容を変更する

答えて

0

...

/** 
    * Direction 
    * @param blockIndex 
    * @param direction 
    */ 
    $scope.moveBlock = function(blockIndex,direction){ 

     var block = {}; 
     var upBlock = {}; 

     if(direction === 'up'){ 
      var nextIndex = blockIndex-1; 
      if($scope.data.blocks[nextIndex]){ 
       angular.copy($scope.data.blocks[blockIndex],block); 
       angular.copy($scope.data.blocks[nextIndex],upBlock); 
       $scope.data.blocks[nextIndex] = block; 
       $scope.data.blocks[nextIndex].order = $scope.data.blocks[nextIndex].order - 1; 
       $scope.data.blocks[blockIndex] = upBlock; 
       $scope.data.blocks[blockIndex].order = $scope.data.blocks[blockIndex].order + 1; 
      } 
      return; 
     } 

     if(direction === 'down'){ 
      var nextIndex = blockIndex+1; 
      if($scope.data.blocks[nextIndex]){ 
       angular.copy($scope.data.blocks[blockIndex],block); 
       angular.copy($scope.data.blocks[nextIndex],upBlock); 
       $scope.data.blocks[nextIndex] = block; 
       $scope.data.blocks[nextIndex].order = $scope.data.blocks[nextIndex].order + 1; 
       $scope.data.blocks[blockIndex] = upBlock; 
       $scope.data.blocks[blockIndex].order = $scope.data.blocks[blockIndex].order - 1; 
      } 
     } 
    }; 
関連する問題