在 mailto 中使用 ng-repeat? (通过 JSON 属性向多个收件人发送邮件)

Using ng-repeat in mailto? (Send mail to multiple recipients by JSON properties)

我目前正在处理使用 angular、PHP 和 mySQL 跟踪用户条目的表单。我已经在这支笔 http://codepen.io/StuffieStephie/full/BzmxXd/ 中将 SQL 转换为常规 JSON,因此您可以看到我正在尝试做什么。

当我单击 Email All {{selected.field}} Volunteers 按钮时,我想要一个逗号分隔的所有电子邮件列表,这些电子邮件与过滤器匹配。

我可以使用

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

但是我如何向这些人发送电子邮件?我觉得在这里使用 ng-href 是错误的。将不胜感激!

编辑:好的,通过将邮件 link 设置为列表模态的文本内容,我有点想出了如何做到这一点。但这看起来真的很奇怪

<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 的值。 (我试图在函数之外给它一个值,但它似乎不起作用。有帮助吗?

知道了! Angular 太花哨了,有时我会忘记 vanilla 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();

初始化 HTML

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

并且 运行 如果 select 下拉列表已更改,则再次执行此功能

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

现在感到非常自豪:D