这是有效的:
HTML
<a href="mailto:?subject={{vm.property.address.streetNumber}}, {{vm.property.address.streetName}} {{vm.cityName}} {{vm.stateName}}%20IPL%20#%20{{vm.property.id}}&body={{comment.note}}">@L("CsEmail")</a>
这不起作用:
<a ng-href="{{vm.email}}" ng-click="vm.composeEmail(comment)">@L("CsEmail")</a>
JS
vm.composeEmail = function (data) {
vm.email = "mailto:?subject={{vm.property.address.streetNumber}}, {{vm.property.address.streetName}} {{vm.cityName}} {{vm.stateName}}%20IPL%20#%20{{vm.property.id}}&body={{data.note}}";
// I need to save this here
};
问:我需要在发送电子邮件后保存数据。因此我无法使用第一个选项。但是第二个选项不起作用。这意味着它没有打开Outlook。怎么做?
答案 0 :(得分:2)
我们从角度控制器中使用它:
vm.composeEmail = function (data) {
var email = "mailto:...";
//save here
$window.location.href = email;
};
这样您就可以保存需要保存的内容,然后从控制器中打开邮件客户端。 html看起来像这样:
<a ng-href="" ng-click="vm.composeEmail(comment)">@L("CsEmail")</a>
你还需要打破你的'mailto'字符串,正如thegio建议的那样。
答案 1 :(得分:1)
为什么不直接使用范围变量,例如:
vm.email = "mailto:?subject=" + vm.property.address.streetNumber + ", " + vm.property.address.streetName + " " + vm.cityName + " " + vm.stateName + " " + "IPL# " + vm.property.id + "&body=" + data.note;
您是否尝试添加target =“_ blank”:
<a ng-href="{{vm.email}}" ng-click="vm.composeEmail(comment)" target="_blank">@L("CsEmail")</a>
答案 2 :(得分:1)
也许是一个更好的解决方案:
<div ng-app="myApp">
<div ng-controller="MyCtrl">
<a href="mailto:{{email}}"><span>Email {{email}}</span></a>
</div>
</div>
var myApp = angular.module('myApp',[]);
var MyCtrl = function($scope) {
$scope.email = 'bob@bob.com';
$scope.name = "Bob";
$scope.cc = "test@test.com";
$scope.subject = "this is the subject";
}
我希望它有所帮助。
答案 3 :(得分:0)
如何在函数中使用$window.open('mailto:etc');
?
答案 4 :(得分:0)
内部&#34; composeemail&#34;功能打开一个新窗口
$window.location.href = 'mailto:etc'
并删除ng-href