2016-06-28 1 views
0

私は配列の更新をしようとしています。最初にその要素をスプライスしてプッシュする必要があります。そのリストは、HTMLファイルで使用しています。ここでは、ng-repeatを使用しています。私のHTMLファイル内なぜ私のスプライスまたはプッシュがAngularJSで動作しない

vm.editTemplate=function() { 
    var selectedTemplate = localStorage.getItem("selectedTemplate"); 
    localStorage.removeItem("selectedTemplate"); 
    $mdDialog.show({ 
     controller: 'EditTemplateCtrl', 
     controllerAs: 'template', 
     templateUrl: 'views/templatess/addTemplate.html', 
     locals: { 
      template:selectedTemplate 
     } 
    }) 
    .then(function() { }, 
     function(item) { 
      console.log(item); 
      console.log($scope.templatesArray); 
      for (var i = 0; i < $scope.templatesArray.length; i++) { 
      if (item.id == $scope.templatesArray[i].id) { 
       $scope.templatesArray.splice(i,1); 
      } 
     } 
    }); 
} 

私はこの

<div class="hover" 
    ng-repeat="list in templatesArray" 
    ng-click="temp.selectUser(list)" 
    ng-class="{'active': temp.selectedRow.id == list.id}" 
    style=" cursor:pointer;border-bottom:1px solid #fff; margin-bottom:0;" 
    layout-align="space-around center" 
    layout="row"> 
    <span flex="5"></span> 
    <span id="{{list.id}}" flex="90" ng-click="temp.selectTemplate(list)"> 
     {{list.description}} 
    </span> 
    <span flex="5"></span> 
</div> 
+0

はありますあなたの2 'はconsole.log()が呼び出されているsの'? – Lex

+0

申し訳ありません私はそれを消すのを忘れました、私はちょうどコードをテストしていた – Christian

+0

いいえ、それはいいです - 私はちょうどそれが呼び出されているのだろうかと思っています。あなたがエラー機能として設定したように見えるので尋ねます。 '.then(function success(){}、function failure(){})'はフォームであり、空の関数とそれに続くコードを持つ関数があります。なぜあなたがエラー機能を使用しなければならなかったのか、それが実際に呼び出されているのか疑問に思っています。 – Lex

答えて

0

は、同じアレイ上のループ内でスプライスを行うには良いことだと思いませんしています。

さらに、既に説明したように、スプライスの結果を割り当てる必要があります。

だから私はむしろ、どうなる:

1. Find the index, something like following (or with the help of a 
library like underscore.js to avoir to write your own loop) 

var index = -1; 

for (var i = 0; i < $scope.templatesArray.length; i++) { 
    if (item.id==$scope.templatesArray[i].id) { 
     index = i; 
    } 
} 

2. Then splice 

if (index > -1) { 
    $scope.templatesArray = $scope.templatesArray.splice(index,1); 
} 
+0

コンソールログの情報をチェックすると、スプライスがドンドされているのがわかりますが、htmlファイルのリストに変更がありません – Christian

+0

私はそれを解決しました。問題は私が同じコントローラに3回ので、いくつかの点で私のhtmlのdissapearとconection。そんな感じ。 – Christian

関連する問題