как получить отличное значение от цикла angularjs - PullRequest
0 голосов
/ 10 марта 2019

Я сделал цикл в , и я хочу получить из этого цикла отличные значения, а затем push до array.

Вместо этого я получаю повторяющиеся значения.

$scope.Empassignedvacations возвращает несколько данных из datatable от db. один столбец из него - это vac, который отображает несколько ключей отпуска в БД. То, что я хочу сделать, это взять эти ключи и выделить их и передать их в другой массив $scope. его зовут $scope.checkedvacs. но я получил 2,2,2,2,20,20,20,20

Assignments.getvacations().then(function (response) {
   $scope.vacations = (response.data);

   Assignments.GetEmpassignedvacations($scope.SelectedEmp1.staffkey)
   .then(function (response) {
     $scope.Empassignedvacations = (response.data)
     $scope.checkedvacs.push( $scope.Empassignedvacations.vac );

     angular.forEach($scope.Empassignedvacations, function (e) {
          angular.forEach($scope.AlternateDirector, function (a) {
               if (e.Staff_Key == a.Staff_Key) {
                  $scope.AlternateD = e.AlternateD; 
               }
          })
          angular.forEach($scope.status, function (s) {
               if (e.status == s.stsid) {
                  $scope.sts = s.stsid;
               }
          })
     })

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Сначала объявите $scope.checkedvacs=[] & $scope.keys=[] в глобальном масштабе для стандартной практики кодирования, затем попробуйте нижеприведенный код

angular.forEach($scope.Empassignedvacations.vac, function(item) {
  // we check to see whether our object exists
  $scope.keys = item[keyname];
  // if it's not already part of our keys array
  if ($scope.keys.indexOf(key) === -1) {
    // push this item to our final output array
    $scope.checkedvacs.push(item);
  }
});

удалите приведенный ниже код и замените ваш код первым примером кода.

$scope.checkedvacs.push( $scope.Empassignedvacations.vac );

 angular.forEach($scope.Empassignedvacations, function (e) {
      angular.forEach($scope.AlternateDirector, function (a) {
           if (e.Staff_Key == a.Staff_Key) {
              $scope.AlternateD = e.AlternateD; 
           }
      })
      angular.forEach($scope.status, function (s) {
           if (e.status == s.stsid) {
              $scope.sts = s.stsid;
           }
      })

Вы также можете перейти по приведенной ниже ссылке, которая может быть полезна для вас https://tutorialedge.net/javascript/angularjs/removing-duplicates-from-ng-repeat/

0 голосов
/ 10 марта 2019

Это происходит потому, что вы играете с одним и тем же значением $scope.Empassignedvacations.

Вы помещаете его в массив, а после - меняете его.Это причина, по которой вы получаете 2,2,2,2,20,20,20,20

Так что вы можете исправить это, нажав copy значения, например:

$scope.checkedvacs.push( angular.copy($scope.Empassignedvacations.vac));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...