2016-09-12 7 views
0

私のAPIからの応答は、 ["email"、 "email"]のような配列になっています。 データをチェックボックスの値にマップして、値を使用して選択したチェックボックス連絡先に電子メールを送信できるようにしたいとします。角度jsのチェックボックスに配列の値を入れる方法

これにはどのように対処できますか?

if($stateParams.nonExists){ 
 
\t \t console.log($stateParams.nonExists) 
 
\t \t $scope.nonExists = $stateParams.nonExists 
 
\t } 
 
\t if($stateParams.data){ 
 
\t \t return $q(function(resolve,reject){ 
 
\t \t \t $http.get('/google/contacts?code='+$stateParams.data). 
 
\t \t \t success(function(res){ 
 
\t \t \t \t if(res && res.length){ 
 
\t \t \t \t \t resolve(res) 
 
\t \t \t \t \t console.log(res); 
 
\t \t \t \t } 
 

 
\t \t }) 
 
\t \t }) 
 
\t \t .then(function(emails){ 
 
\t \t \t $http.post('/user/import/exists',{emails:_.pluck(emails,'address')}). 
 
\t \t \t success(function(data){ 
 
\t \t \t \t $scope.existUsers = data.data.exists 
 
\t \t \t \t $scope.nonExists = data.data.nonExists 
 
\t \t \t }) 
 
\t \t }) 
 
\t }

これは私のコントローラ内のコードです。私の問題はhttpリクエストのデータが['[email protected][email protected]]のような配列で であり、これらの配列の値をチェックボックスに入れてメールを送信したいのですが

+0

アンギュラビューはあなたのモデルを反映しているだけなので、モデルを更新してください... – Hitmands

+0

私はスコープ変数に持っていますが、それは値であるため、私のモデルとして使用している問題があります。 –

+0

あなたのコードを私たちに提供して、ちょうどあなたが望むものをもう少し説明できますか? :) – Mistalis

答えて

2

現在のデータ構造送信する電子メールのオン/オフを知ることはできません。構造のための私の提案は次のとおりです。

[ 
{"email":"email","send":false}, 
{"email":"email","send":true}, 
//...other emails 
] 

それはサーバ側で行うことができない場合は、JavaScriptで進路変更構造のことができます。チェックボックスを表示するには、この構造を設定する方法 - 作業例を確認してください。

var app=new angular.module("checkbox",[]); 
 

 
app.controller("main",function($scope){ 
 

 
    //example data 
 
    var data=[ 
 
    "[email protected]", 
 
    "[email protected]", 
 
    "[email protected]" 
 
    
 
    ]; 
 

 
    $scope.checkboxes=[];//create new structure 
 

 

 
    //convert to new structure 
 
    for (var i=0; i<data.length; i++){ 
 

 
     $scope.checkboxes.push({email:data[i],send:false});//we add elements to new structure 
 
    } 
 
    
 
    
 
    //function is only for showing send property change 
 
    $scope.showChange=function(element){ 
 

 
     console.log("You changed: "+element.email); 
 

 
    }; 
 

 

 
    //function is doing conversion to previous structure 
 
    $scope.getMailsForSend=function(){ 
 
     
 
     var emails=[]; 
 

 
     for (var i=0; i<$scope.checkboxes.length; i++){ 
 
       
 
      if ($scope.checkboxes[i].send) 
 
      emails.push($scope.checkboxes[i].email);//add only mails with send on true   
 
    
 
     } 
 

 
     console.log("Your checked email adresses:"); 
 
     console.log(emails); 
 

 
     return emails; 
 
    }; 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="checkbox"> 
 

 
    <div ng-controller="main"> 
 
    <div ng-repeat="check in checkboxes"> 
 
    {{check.email}}<input type="checkbox" ng-change="showChange(check)" ng-model="check.send"> 
 
    </div> 
 
    <button ng-click="getMailsForSend()">Give checked email adresses</button> 
 
    </div> 
 

 
    
 
</div>

だから我々は、チェックボックスsendオブジェクトのプロパティのng-modelとして設定し、それを始めとチェックボックスの状態変化のすべての変更にバインドされ我々のsendプロパティ。

+0

あなたは私のコードの一部を追加しました。 –

+0

@SajakUpadhyaya元の構造からの変換でコードを更新しました。 –

+0

これはうまくいくと思いますが、これを実装します。 –

関連する問題