2016-07-13 8 views
0

В настоящее время я работаю над формами, использующими угловые, PHP и mySQL для отслеживания пользовательских записей. Я преобразовал SQL в обычный JSON в это перо http://codepen.io/StuffieStephie/full/BzmxXd/, чтобы вы могли видеть, что я пытаюсь сделать.Использование ng-repeat в mailto? (Отправлять почту нескольким получателям по свойствам JSON)

Когда я нажимаю кнопку Email All {{selected.field}} Volunteers, я бы хотел, чтобы у вас был список всех адресов электронной почты, соответствующих фильтру.

я могу получить список с помощью

<b ng-repeat="d in names | filter:filters">{{d.email}}{{$last ? '' : ', '}}</b> 

Но как я могу отправить этих людей? Мне кажется, что здесь используется ng-href. Точка в правильном направлении была бы оценена!

EDIT: Хорошо, я как-то понял, как это сделать, установив почтовую ссылку в виде текстового содержимого в списке модальных. Но это, кажется, действительно шаткий

<a ng-href="mailto:{{emails}}" target="_blank" class="waves-effect waves-light btn margin-bottom-1em"><i class="material-icons left">email</i>Email All {{selected.field}} Volunteers ({{(names | filter:filters).length}})</a>

$scope.hasChanged = function() { 
     $scope.filters = $scope.selected.field; 
     $scope.emails = $("b.theEmails").text(); 
    return $scope.emails; 
    } 

Кроме того, я должен изменить выпадающий фильтр, чтобы запустить функцию hasChanged() поэтому значение $scope.emails будет назначен. (Я пытался дать ему значение вне функции, но, похоже, не работает. Любая помощь?

+0

В качестве опции вы можете добавить 'ng-click =" sendMail() "вместо ng-href, подготовить почту в этой функции и использовать window.open с" mailto :» – shagrin

ответ

1

Уточните, что иногда я забываю ваниль. JS существует: P Это может быть более эффективным, но это работает! Вот! http://codepen.io/StuffieStephie/full/QEaGPY/

// Lil function to check if empty 
function isEmpty(obj) { 
    if (obj) { 
    for (var prop in obj) { 
     if (obj.hasOwnProperty(prop)) { 
     return false; 
     } 
    } 
    } 
    return true; 
} 


$scope.getEmails = function(){ 
    var statusFilter = $scope.filters; 
    var res = []; 
    for (var i=0;i<$scope.names.length;i++) { 
     var thisVolunteer = $scope.names[i]; 
     var email = thisVolunteer["email"]; 
    if (isEmpty(statusFilter) == false){ //If there's a filter, status must match 
     if (thisVolunteer.status == statusFilter) { 
      res.push(email); 
      } //END IF Matching Status 
     }//END IF filter 

    // OTHERWISE (no filter) Add/push all emails into res array 
    else {res.push(email); } //END ELSE add all 
    } //END FOR 
    $scope.list = res.join(", "); //Join the emails as a comma separated list 
}; //END GetEmails(); 

Init в HTML

<a ng-init="getEmails()" ng-href="mailto:{{list}}" target="_blank"> 
Email All {{selected.field}} Volunteers ({{(names | filter:filters).length}})</a> 

И запустите функцию еще раз, если выберите выпадающий изменился

$scope.hasChanged = function() { 
    $scope.filters = $scope.selected.field; 
    $scope.getEmails(); 
    } 

Чувство гордости прямо сейчас: D