在角度控制器中打开Outlook

时间:2016-04-11 15:47:11

标签: angularjs outlook

这是有效的:

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。怎么做?

5 个答案:

答案 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

中的值