2017-03-01 4 views
0

角度jを初めて使用しています。私はテーブル付きのチェックボックスを持っています。配列から未確認の値を取り除きます。角度js

<td><input type="checkbox" ng-if="report.attributes.message.length > 0" ng-bind="report.attributes.message" ng-click="getcheckedData(report.attributes.message)">{{ report.attributes.message }}</td> 

ここでは、方法はgetcheckedData()です。だから、その方法

var messages = []; 

    $scope.getcheckedData = function(SelectedVal) {  
     $("input:checkbox[type=checkbox]:checked").each(function() { 
      if ($.inArray(SelectedVal , messages) === -1){ 
       messages.push(SelectedVal); 
      } 
     }); 
     return messages; 
    }; 

で、私は私が世界的に宣言された配列を持っている、。だから、私はその配列に選択されたチェックボックスのテーブルデータの値を取ることにしたいです。私はその値をarrayに得ることができます。したがって、ユーザーがチェックを外すと、チェックされていない値もそのarrayから削除されます。だから、ユーザがそれをチェックすると、 私はすべてのチェックされたメッセージをバックエンドに送信しているというボタンを1つ付けました。 そのため、すべてのメッセージがまだアレイに残っているときにそのボタンをオフにしてボタンを押すと、ボタンの

$scope.sendAllMessages = function() {  
     uploadService.SendMessagesToQueue(uploadService.currentFileName,$scope.documentType,messages) 
    .then(function() { 
     }, function (error) { 
     $scope.errorMessage = error.status + " : " + error.statusText; 
     toastr.error($scope.errorMessage, 'Error : ' + error.status); 
     if (error.status === 401) { 
      loginService.authenticationError(); 
     } 
     }) 
     .finally(function() { 

     }); 
    }; 

-

ので
<button type="submit" ng-click = "sendAllMessages()" class="button-size btn btn-primary">Send </button> 

、どのように私はこの問題を解決することができますか?

答えて

2

あなたが必要とするものを達成するための角度のない方法です。

しかし、あなたと同じ方法で行う必要がある場合は、ここで行うべき変更があります。

それは、ここでmessages.splice(index, 1);

を使用すると、NG-モデルなしで、あなたのの変更されたコードチェックされている場合は、配列から値を削除する必要があります(推奨されません)

var messages = []; 

    $scope.getcheckedData = function(SelectedVal) {  

      if ($.inArray(SelectedVal , messages) === -1){ 
       messages.push(SelectedVal); 
      } 
      else 
      { 
      var index = messages.indexOf(SelectedVal) 
      messages.splice(index, 1); 
      } 

     return messages; 
    }; 

へあなたは角度の方法でそれを達成する必要があります。ng-model

ここではAngウラル

var app = angular.module('app', []); 
 

 
function Ctrl($scope) { 
 
    
 
    $scope.messages = { 
 
     
 
    }; 
 

 
    $scope.reports = [ { "name": "Sport", "id": "50d5ad" } , {"name": "General", "id": "678ffr" } ]; 
 
    
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-controller="Ctrl" ng-app="app"> 
 
    <span ng-repeat="report in reports"> 
 
     <label class="checkbox" for="{{report.id}}"> 
 
     <input type="checkbox" ng-model="messages[report.id]" name="group" id="{{report.id}}" /> 
 
     {{report.name}} 
 
     </label> 
 
    </span> 
 
    <pre ng-bind="messages | json"></pre>  
 
</div>

+0

あなたの助けのためのおかげで、実際にそれは私のために働いていません。私がチェックして配列に追加しますが、チェックを外すと配列に残ります。しかし、次にチェックすると、array.checkから削除され、uncheckは適切ではありません。 – ganeshk

+0

角度を試してみましたか? – Sravan

+0

はい私はそれを試みました。しかし、運はありません – ganeshk

関連する問題