[英]dataObject creation in MEANJS 4.2
我最近加载了多个MEANJS版本(meanjs.org),以更好地了解文件结构并查看更改。
在4.0中,articles.client.controller.js具有特定的含义:当我向mongoose Schema追加新字段时,我可以在那里对新Articles进行更改。
$scope.create = function () {
// Create new Article object
var article = new Articles({
title: this.title,
content: this.content
});
在4.1中,它是这样的。
// Create new Article object
var article = new Articles({
title: this.title,
content: this.content
});
现在使用4.2,我在article.client.controller.js中看不到它,
vm.article = article;
我有修改后的Schema版本。 如何对新的Articles对象的创建进行更改? 对于将应用程序从4.0、4.1升级到4.2,这是一个很好的问题。
略有变化。
像版本4一样直接尝试使用资源可能会导致页面准备就绪但资源未准备就绪的问题(文章)。
为了解决这个问题,角度使用者解决了使用promise处理时序问题的问题。
要知道的重要一点是,诺言将在将来的某个时候给您一些答案-只是,这可能不是您想要的答案!
无论哪种方式,一旦找到答案,它总是会告诉您-解决之后,它会更正确地告诉您。
Angular使用承诺来解决上述计时问题。 解析将以承诺为基础,并且仅在解析... erm ...解析后才加载控制器。
这意味着我们将始终如期提供文章。
resolves选项用于更新的article.client.routes中 。 在这里,我们看到articleResolve
的键是getArticle
,它本身不是一个getArticle
,而是一个返回一个的函数(这很好!)
如果我们看下面的几行,我们可以看到我们如何创建这个Promise返回函数。 该函数使用Angular的$ stateParams(检查状态)并为请求的文章填写articleId。 我们使用注入的熟悉的文章服务获得文章。
在您的情况下,您想知道如何创建新文章,因此我们必须进一步研究最近更新的文章服务 。
这几乎与您习惯使用的Articles服务相同,但是其他行在此服务中添加了一个额外的方法,使它可以创建,或者如果存在的话可以保存文章详细信息。
这些行是我们如何扩展角度服务的方式, 下面的实现基本上检查文章是否具有._id
属性。 这是所有保存的mongo db文档都获得的.id
属性的字符串表示形式。
它使用此信息调用适当的方法。
在控制器中,我们看到之前创建的承诺键articleResolve
用作第二个注入参数; 好像说“当您解决本文服务时,在我注入参数时,将其用作第二个参数”。
当我们查看控制器定义时,我们注意到相应的第二个参数名为article。
背景 :在任何控制器中, this
实际上都指向作用域(或$ scope)。 按照惯例† ,并使角度对象看起来像标准JavaScript,在其中我们经常说 var that = this
,我们创建了一个变量来引用我们的范围。
在控制器内, 我们将本文附加到作用域,以便可以通过vm.article在视图中对其进行访问。
鳍!
†当有机会时,请吃草帕帕约翰( John Papa John)的风格指南 ,并慢慢发展自己的代码风格以适应它。 这将帮助您避免陷阱,并且副作用使很多角度代码示例/教程更易于理解,尤其是在作者也遵循的情况下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.