У меня есть две таблицы, и я хочу добавить данные второй таблицы в $ scope.notiData и как я могу удалить повторяющиеся данные ng, если я нажму удалить символ X. У меня есть некоторый код, но он не работает. Пожалуйста, помогите всем

http://jsfiddle.net/A6bt3/118/

var app = angular.module('myApp', []);
function checkBoxCtrl($scope) {
$scope.tableOne = [{
        firstname: 'robert',
        value: 'a'
    }, {
        firstname: 'raman',
        value: 'b'
    }, {
        firstname: 'kavi',
        value: 'c'
    }, {
        firstname: 'rorank',
        value: 'd'
    }
];
$scope.tableTwo = [];//the table to be submitted
function removeitems(tableRef) { //revmove items from tableRef
    var i;
    for (i = tableRef.length - 1; i >= 0; i -= 1) {
        if (tableRef[i].checked) {
            tableRef.splice(i, 1);
        }
    }
}
$scope.btnRight = function () {
   //Loop through tableone
    $scope.tableOne.forEach(function (item, i) {
       // if item is checked add to tabletwo
        if (item.checked) {
            $scope.tableTwo.push(item);
        }
    })
    removeitems($scope.tableOne);
}
$scope.btnAllRight = function () {
    $scope.tableOne.forEach(function (item, i) {
        item.checked = true;
        $scope.tableTwo.push(item);
    })
    removeitems($scope.tableOne);
}
$scope.btnLeft = function () {
    $scope.tableTwo.forEach(function (item, i) {
        if (item.checked) {
            $scope.tableOne.push(item);
        }
    })
    removeitems($scope.tableTwo);
}
$scope.btnAllLeft = function () {
    $scope.tableTwo.forEach(function (item, i) {
        item.checked = true;
        $scope.tableOne.push(item);
    })
    removeitems($scope.tableTwo);
}
$scope.done = function () {
    //alert(angular.toJson($scope.tableTwo));
        $scope.notiData = $scope.tableTwo;  
}
    $scope.removeRow = function () {

}

};
0
Sabari Sabagare 7 Янв 2017 в 21:44

3 ответа

Лучший ответ

Сделай так:

$scope.removeRow = function (item) {
  var index = $scope.notiData.indexOf(item);
  $scope.notiData.splice(index, 1); 
}

И объединить массивы:

$scope.done = function () {
    angular.extend($scope.notiData, $scope.tableTwo);
}

Не забудьте инициализировать notiData:

$scope.notiData = [];

Чтобы решить проблему перенаправления, удалите target="_blank" и измените href:

<a ng-repeat="data in notiData" class="emailButton" href="#">{{data.firstname}}<div class="" ng-click="removeRow()">X</div></a>

http://jsfiddle.net/A6bt3/122/

0
Mustapha Larhrouch 7 Янв 2017 в 19:27

Передать индекс элемента данных в функцию removeRow () из представления.

<a ng-repeat="data in notiData" class="emailButton" href="#">{{data.firstname}}
  <div class="" ng-click="removeRow($index)">X</div>
</a>

И в фильтре контроллера пропущенный элемент индекса из списка.

$scope.removeRow = function (index) {

     $scope.notiData = $scope.notiData.filter(function(elem){      
               return elem !== $scope.notiData[index]
        })
 }

Скрипка: http://jsfiddle.net/w5upkawt/

0
Deep 7 Янв 2017 в 19:03

HTML-элемент

<a ng-repeat="data in notiData" class="emailButton">{{data.firstname}}
  <div class="" ng-click="removeRow($index)">X</div>
</a>

Удалить функцию

$scope.removeRow = function (index) {
        $scope.notiData.splice(index,1);
}
0
Angeldev 7 Янв 2017 в 19:02