如何在不更改 window 位置的情况下在 AngularJS 控制器中触发 mailto
How to trigger mailto in AngularJS controller without changing window location
我有一个 angular 控制器,它在单击邮件图标时触发 "mailto" link
angular
.module('app')
.component('header', {
template: '<a href="" ng-click="headerCtrl.mailTo()"><i class="fa fa-envelope" aria-hidden="true"></i></a>',
controller: HeaderController,
controllerAs: 'headerCtrl'
});
function HeaderController() {
var vm = this;
vm.sendMail = sendMail;
function sendMail(response) {
var email = 'test@mail.com';
var subject = 'email%20subject';
var body = 'email%20body';
vm.mailToUri = 'mailto:' + email + '?subject=' + subject + '&body=' + body;
$window.location = vm.mailToUri;
}
}
不幸的是,这 运行 在与浏览器关闭时调用注销 url 的指令相同的应用程序中
angular
.module('app')
.directive('onCloseLogout', onCloseLogout);
function onCloseLogout($http, $window) {
return {
restrict: 'AE',
link: function () {
$window.onbeforeunload = function () {
$http.get('/logout');
};
}
};
}
因此,当单击电子邮件 link 时,会触发 onCloseLogout 指令,并且用户会注销。
是否有其他方法可以在 angular 中打开电子邮件,或者在浏览器关闭时向注销 URL 发送获取请求?
原来我过度设计了解决方案。我将 mailToUri 作为 ng-href 属性添加到锚标记,现在一切正常
angular
.module('app')
.component('header', {
template: '<a ng-href="{{headerCtrl.mailToUri}}"><i class="fa fa-envelope" aria-hidden="true"></i></a>',
controller: HeaderController,
controllerAs: 'headerCtrl'
});
function HeaderController() {
var vm = this;
var email = 'test@mail.com';
var subject = 'email%20subject';
var body = 'email%20body';
vm.mailToUri = 'mailto:' + email + '?subject=' + subject + '&body=' + body;
}
我有一个 angular 控制器,它在单击邮件图标时触发 "mailto" link
angular
.module('app')
.component('header', {
template: '<a href="" ng-click="headerCtrl.mailTo()"><i class="fa fa-envelope" aria-hidden="true"></i></a>',
controller: HeaderController,
controllerAs: 'headerCtrl'
});
function HeaderController() {
var vm = this;
vm.sendMail = sendMail;
function sendMail(response) {
var email = 'test@mail.com';
var subject = 'email%20subject';
var body = 'email%20body';
vm.mailToUri = 'mailto:' + email + '?subject=' + subject + '&body=' + body;
$window.location = vm.mailToUri;
}
}
不幸的是,这 运行 在与浏览器关闭时调用注销 url 的指令相同的应用程序中
angular
.module('app')
.directive('onCloseLogout', onCloseLogout);
function onCloseLogout($http, $window) {
return {
restrict: 'AE',
link: function () {
$window.onbeforeunload = function () {
$http.get('/logout');
};
}
};
}
因此,当单击电子邮件 link 时,会触发 onCloseLogout 指令,并且用户会注销。
是否有其他方法可以在 angular 中打开电子邮件,或者在浏览器关闭时向注销 URL 发送获取请求?
原来我过度设计了解决方案。我将 mailToUri 作为 ng-href 属性添加到锚标记,现在一切正常
angular
.module('app')
.component('header', {
template: '<a ng-href="{{headerCtrl.mailToUri}}"><i class="fa fa-envelope" aria-hidden="true"></i></a>',
controller: HeaderController,
controllerAs: 'headerCtrl'
});
function HeaderController() {
var vm = this;
var email = 'test@mail.com';
var subject = 'email%20subject';
var body = 'email%20body';
vm.mailToUri = 'mailto:' + email + '?subject=' + subject + '&body=' + body;
}