在 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
我目前正在处理使用 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