33127


複数のメンバーを持つリストから任意のメンバー削除した際、  
リストのデータは削除されるのですが、空白行として残ってしまいます。  
前後を詰め合わせたいのですが、どうすれば良いのでしょうか？

[code]

    //編集ロジック
    function funcRepeat($scope){
        $scope.RepeatDelegate = {
          countItems: function() {
            return table.length; 
          },
          calculateItemHeight: function(index) {
            return 45;
          },
          configureItemScope: function(index, itemScope) {
            itemScope.data = table[index];
            itemScope.id = index;
            },
          destroyItemScope: function(index, itemScope) {
          }
        };
    };
    //削除ロジック
    function Click(obj){
      var id = obj.id; //任意のidを指定
      var node = document.getElementById(id);
      removeElement(node); //データは消えるが空白行が残る
    }
[/code]

[code]

    <ons-list id="list" ng-controller="RepeatController">
     <ons-list-item id="{{id}}" class="list-item"  ons-lazy-repeat="RepeatDelegate">
      //省略
        {{data}}
     </ons-list-item>
    </ons-list>
[/code]


CC BY-SA 3.0
2017-03-06T07:09:45.637
33125
2017-03-06T09:30:33.943
2017-03-06T08:48:21.843
17222
17222
question
monaca onsen-ui
ons-lazy-repeat のメンバーを削除した際に詰め合わされない


DOMを直接触るのではなく、`ons-lazy-
repeat`で表示させようとしているリストデータを更新し、Delegateのrefresh()を呼んでください。  
<https://onsen.io/v2/docs/angular1/ons-lazy-repeat.html#method-refresh>

* * *

追記  
refresh()を呼ぶ必要もなさそうですね。  
表示に利用しているリストデータの方を追加/削除などすれば反映されました。

繰り返しますがDOMを触るのは間違いです。データの方を更新してください。

* * *

ng-clickにクリックされた場合に呼び出す削除処理(onDelete)を記載しています。  
$indexでインデックス値を参照することができます。  
削除処理にて渡されたインデックス値のデータをtableから削除しています。

[code]

    //編集ロジック
    function funcRepeat($scope){
        $scope.RepeatDelegate = {
          countItems: function() {
            return table.length; 
          },
          calculateItemHeight: function(index) {
            return 45;
          },
          configureItemScope: function(index, itemScope) {
            itemScope.data = table[index];
            itemScope.id = index;
            },
          destroyItemScope: function(index, itemScope) {
          }
        };
    
        $scope.onDelete = function(index) {
          table.splice(index, 1);
        }
    };
[/code]

[code]

    <ons-list id="list" ng-controller="RepeatController">
     <ons-list-item id="{{id}}" class="list-item"  ons-lazy-repeat="RepeatDelegate" ng-click="onDelete($index)">
      //省略
        {{data}}
     </ons-list-item>
    </ons-list>
[/code]


CC BY-SA 3.0
2017-03-06T07:34:36.090
33127
2017-03-06T09:30:33.943
2017-03-06T09:30:33.943
20272
20272
33125
answer