[英]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.