2016-06-28 4 views
0

Я пытаюсь сделать обновление для массива, и мне нужно сначала сращить этот элемент, а затем сделать push. Этот список я использую его в HTML-файле, где я использую ng-repeat.Почему мой splice или не работает с 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); 
      } 
     } 
    }); 
} 

в моем HTML файл у меня есть этот

<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

ли ваши две 'console.log()' ы называют? – 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

, когда я проверяю информацию в журнале консоли, я вижу, что сплайсинг был donde, но мой список в html-файле не имеет изменений. – Christian

+0

Я решил это, jejeje проблема в том, что я получал в том же контроллере 3 раза , поэтому в какой-то момент связь с моим html исчезает. что-то вроде того. – Christian

Смежные вопросы