学习使用Angularjs和Node进行编码 – 创build基本的联系表单 – 无效的速记属性初始值设定项

第一篇文章:)

我正在学习如何使用Angularjs和Node进行编码。 我已经做了一些JavaScript课程,没有任何问题,我的一个朋友向我提出build议,要与Angularjsbuild立一个基本的联系表单,通过Node发送一封电子邮件,以推进我的学习。

我已经通过Angularjs文档,节点文档和不同的教程和网站,以find我的问题的解决scheme,并能够前进,但卡住了这个错误。

这是我的代码:

<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> </head> <body> <div ng-app="myApp"> <form name="mailForm" action="#" ng-controller="MainController"> To: <input type="email" ng-model="inputTo"><br> Subject: <input type="text" name="inputSubject"><br> Mail body: <br><textarea name="inputMessage">Type in your message</textarea><br> <input type="submit" ngClick="Submit"> </form> </div> <script> var app = angular.module('myApp', []); app.controller('MainController', function($scope){ var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport('smtps://email%40gmail.com:password@smtp.gmail.com'); $scope.data = { inputTo = "default", inputSubject = "default", inputMessage = "default" }; $scope.submitForm = function(){ var mailOptions = { from: '"Dev ?" <email@email.com>', to: {{inputTo}}, subject: {{inputSubject}}, text: {{inputMessage}} } transporter.sendMail(mailOptions, function(error, info){ if(error){ return console.log(error); } console.log('Message sent: ' + info.response); }); } }) </script> </body> </html> 

事情是,每当我testing窗体(通过完成它,并点击提交button,呵呵!)我在控制台上得到以下错误:

 index.html?inputSubject=test&inputMessage=TEST+Type+in+your+message:26 Uncaught SyntaxError: Invalid shorthand property initializer angular.js:38 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.4.8/$injector/modulerr?p0=myApp&p1=Error%3A%2…ogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.4.8%2Fangular.min.js%3A20%3A274)(…) 

你们能帮我一下吗?

提前非常感谢!

我想你只是试图融合node.js和angularjs。 我的第一个技巧是当你使用var nodemailer = require('nodemailer'); 这就是你如何在nodejs中需要其他的包,angularjs没有这个function。 在快速谷歌searchnodemailer后,我的怀疑被证实。 由于nodemailer是nodejs的一个包,所以你将无法在angular度应用程序中访问它的function,至less不能直接访问它。

你想要做的是在你的angularjs应用程序中调用node.js函数的函数。 所以你只需要将当前在angular控制器中的逻辑移植到它自己的node.js文件中。

事情的nodejs方面稍微复杂一点。 您需要定义一个nodejs路由,以便能够与nodejs“交谈”。 所以基本上每当你到达你的页面的某个链接,你的nodejs代码被调用。

例如,可能会去: www.base-website-url/create/email将运行您的server.js文件,其中包含您的nodejs代码(相同于你的控制器内)。 我build议你学习如何在nodejs中制作一个简单的粗糙应用程序。 只是谷歌。

此外,现在这个问题,事情的angular度也会稍微复杂一点。 由于您正在创build一些东西(在这种情况下是一个电子邮件对象),您将需要在angularjs中调用POST(Google http动词)来将电子邮件对象发送到我们的nodejs函数。 Angular提供$ http帮助。 ngResource也是你可以使用的另一个补充模块,但是我可能会坚持学习$ http。

一些其他的事情。 我知道这是你的第一篇文章,所以我可以理解为什么你可能已经写了你的文章,但只是为了将来,这里有一些东西,可以让你的文章更多的行动:

  1. 保持你的描述简短 ,重点,包括标题。 我不太可能想回答你的问题,如果它不必要的冗长,我想尽快找出问题。

  2. 分享一个解决的代码示例 。 有几个网站在那里( jsfiddle , plunkr , codepen )允许你“代码涂鸦”,因为我指的是它们。它们有一个html面板,css面板和js面板。 这使得编写足够的代码来获得工作示例并共享链接变得非常容易。 这样的任何其他开发人员想要帮助解决问题,已经有一些代码,他们可以开始玩。 使它更容易回答你的问题,当你创build它的时候,你甚至可以自己发现错误。 (我不止一次这样做了)

  3. 接受答案。 如果答案是正确的,则将其标记为已接受,答案旁边的绿色小检查。 这让其他人知道答案为你工作,所以他们可以感觉更有信心尝试,也奖励响应者。

除此之外,只要不断学习,尽量至less和你一样多。 祝你好运!

你的语法有几个问题。

1)定义对象的正确方法如下: http : //www.w3schools.com/js/js_objects.asp

 $scope.data = { inputTo: "default", inputSubject: "default", inputMessage: "default" };