Javascript “错误”;TypeError:无法读取属性';电子邮件';“未定义”的定义;使用AngularJS和Ionic
我使用AngularJS和Ionic生成以下表单:Javascript “错误”;TypeError:无法读取属性';电子邮件';“未定义”的定义;使用AngularJS和Ionic,javascript,angularjs,forms,ionic-framework,undefined,Javascript,Angularjs,Forms,Ionic Framework,Undefined,我使用AngularJS和Ionic生成以下表单: <ion-modal-view class="game" ng-controller="PdfsmtpCtrl"> <ion-header-bar class="bar bar-balanced"> <a class="button button-icon icon ion-close-circled" ng-click=
<ion-modal-view class="game" ng-controller="PdfsmtpCtrl">
<ion-header-bar class="bar bar-balanced">
<a class="button button-icon icon ion-close-circled" ng-click="hideInformation()"></a>
<h1 class="title">PDF-Export per Email</h1>
<a type="submit" ng-click="getPdf(user)" class="button button-icon icon ion-checkmark-circled"></a>
</ion-header-bar>
<ion-content scroll="false" class="game">
<div>
<form novalidate class="simple-form">
<label>E-mail: <input type="email" ng-model="user.email" /></label><br />
<input type="submit" ng-click="getPdf(user)" value="Save" />
</form>
</div>
</ion-content>
</ion-modal-view>
PDF导出每封电子邮件
电子邮件:
更新:以下是相关的AngularJS代码:
'use strict';
angular.module('app')
.controller('PdfsmtpCtrl', function ($scope, Pdfsmtp)
{
$scope.pdfsmtp = new Pdfsmtp();
$scope.hideInformation = function ()
{
$scope.pdfsmtpModal.hide();
};
//joey: PDF to generate
$scope.getPdf = function (user)
{
var user = angular.copy(user);
var emailReceiver = user.email;
var emailSubject = "<SubjectText>";
var emailBody = "<BodyText>";
var emailSender = "<EmailAddress>";
var fileName = "<FileName.pdf>";
var hostName = "<SenderHostName>";
var contentType = "application/pdf";
var doc = new jsPDF
({
orientation: 'p', // p = portrait, l = landscape
unit: 'mm',
format: [210, 297],
});
//joey: Simon Bengtsson and his autotable
doc.setFontSize(22);
doc.setTextColor(23, 154, 85);
doc.text(("<SomeText>"), 14, 15);
doc.autoTable(
{
startY: 30,
startX: 30,
headStyles: {fillColor: [25, 141, 79] },
footStyles: {fillColor: [25, 141, 79] },
theme: 'grid',
styles:
{
overflow: 'linebreak',
lineWidth: 0.5,
lineColor: [25, 141, 79]
},
html: '#resultTable',
});
var finalY = doc.lastAutoTable.finalY || 20;
doc.setTextColor(23, 154, 85);
doc.text('Table: Signature:', 14, finalY + 20);
var blob = doc.output();
var dataUri = "data:" + contentType + ";base64," + btoa(blob);
Email.send(
{
Host: hostName,
Username: emailSender,
Password: "<somepassword>",
To: emailReceiver,
Attachments :
[{
name : fileName,
data : dataUri
}],
From: emailSender,
Subject: emailSubject,
Body: emailBody
}).then($scope.hideInformation());
//}).then(message => alert(message)
}
});
“严格使用”;
角度。模块('app')
.controller('PdfsmtpCtrl',函数($scope,Pdfsmtp)
{
$scope.pdfsmtp=新的pdfsmtp();
$scope.hideInformation=函数()
{
$scope.pdfsmtpModal.hide();
};
//要生成PDF文件吗
$scope.getPdf=函数(用户)
{
var user=angular.copy(用户);
var emailReceiver=user.email;
var=subject=“”;
var emailBody=“”;
var emailSender=“”;
var fileName=“”;
var hostName=“”;
var contentType=“应用程序/pdf”;
var doc=新的jsPDF
({
方向:“p',//p=纵向,l=横向
单位:毫米,
格式:[210297],
});
//乔伊:西蒙·本特森和他的自动表
文件setFontSize(22);
setTextColor文件(2315485);
文件正文(“),14、15);
自动表格(
{
星期三:30,,
startX:30,
头型:{fillColor:[2514179]},
鞋款:{fillColor:[2514179]},
主题:“网格”,
风格:
{
溢出:“换行符”,
线宽:0.5,
线条颜色:[2514179]
},
html:“#可结果”,
});
var finalY=doc.lastAutoTable.finalY | 20;
setTextColor文件(2315485);
文件文本('表:签名:',14,最终+20);
var blob=doc.output();
var dataUri=“数据:”+contentType+““base64”+btoa(blob);
Email.send(
{
主机名:,
用户名:emailSender,
密码:“”,
收件人:emailReceiver,
附件:
[{
名称:fileName,
数据:dataUri
}],
发件人:emailSender,
主题:电邮主题,,
正文:emailBody
})。然后($scope.hideInformation());
//})。然后(消息=>警报(消息)
}
});
单击表单中的Save
时,一切正常,变量用户将被相关功能接管
单击
中的提交图标时,由于变量用户未定义,可看到以下错误:
TypeError:无法读取未定义的属性“email”
需要做什么才能使用Submit
?您应该初始化用户对象。这样,当您尝试访问电子邮件属性时,对象就不会未定义
$scope.pdfsmtp = new Pdfsmtp();
$scope.user = { email : ''};
您应该初始化用户对象。这样,当您尝试访问电子邮件属性时,对象就不会未定义
$scope.pdfsmtp = new Pdfsmtp();
$scope.user = { email : ''};
使用安全导航操作符:user?.email
。不幸的是,这不起作用。错误消失,但名为user的变量未定义。因此,背后的功能无法完成其工作…它解决了您在帖子中提出的问题。现在,您遇到了一个不同的问题--弄清楚为什么用户
数据对象是未定义的
。共享您的typescript代码。这很可能是因为您没有初始化用户,但试图在其中设置属性“email”。尝试将其初始化为空对象。@Tobyoke:我现在也添加了相关的代码部分。希望这能说明问题…使用安全导航操作符:user?.email
。不幸的是,这不起作用。错误消失,但名为user的变量未定义。因此,背后的功能无法完成其工作…它解决了您在帖子中提出的问题。现在,您遇到了一个不同的问题--弄清楚为什么用户
数据对象是未定义的
。共享您的typescript代码。这很可能是因为您没有初始化用户,但试图在其中设置属性“email”。尝试将其初始化为空对象。@Tobyoke:我现在也添加了相关的代码部分。希望这能为这个问题带来启示……太好了,就是这样!非常感谢。太好了,就这样!非常感谢。