2015-10-28 18 views
0

我開始學習angular2和流星,從http://angular-meteor.com/tutorials/angular2/3-way-data-binding問題從angular-meteor.com

而且在3TH教訓我在控制檯2的錯誤:

refreshingclient/app.ts (18, 11): Generic type 'Array<T>' requires 1 type argument(s). 
client/app.ts (20, 19): Cannot find name 'zone'. 

當我加了一些文件Mongo從命令行,他們不會出現在頁面上。

和我app.ts文件:

/// <reference path="../typings/angular2-meteor.d.ts" /> 
import {Component, View, NgFor} from 'angular2/angular2'; 
import {Parties} from 'collections/parties'; 
import {bootstrap} from 'angular2-meteor'; 

@Component({ 
    selector: 'app' 
}) 
@View({ 
    templateUrl: 'client/app.html', 
    directives: [NgFor] 
}) 
class Socially { 
    parties: Array; 
    constructor() { 
     Tracker.autorun(zone.bind(() => { 
     this.parties = Parties.find().fetch(); 
     })); 
    } 
} 
bootstrap(Socially); 

是什麼問題?

回答

1

在客戶機/ app.ts文件,指令(http://angular-meteor.com/tutorials/angular2/3-way-data-binding)顯示:

class Socially { 
    parties: Mongo.Cursor; 

    constructor() { 
     this.parties = Parties.find(); 
    } 
} 

它實際上應該是:

class Socially { 
    parties: Mongo.Cursor<Object>; 

    constructor() { 
     this.parties = Parties.find(); 
    } 
} 

通知<Object>Mongo.Cursor後已添加。

如果轉到步驟4,會有鏈接下載代碼的zip文件(https://github.com/Urigo/meteor-angular2.0-socially/archive/step_03.zip)。你會在那裏看到代碼是正確的。

+0

好的,它的工作,但只有當我在服務器文件夾中添加文件:** main.ts **和** load_parties.ts **。在沒有任何關於它的教程中,你能解釋我爲什麼會發生這種情況嗎? – kuka11

+0

該教程非常明確。閱讀'在服務器端初始化數據'部分。同時重新閱讀'Declare a Collection'部分,其中描述了流星如何處理名爲「client」和「server」的特殊文件夾。您也可以直接從流星文檔獲取該信息:http://docs.meteor.com/#/full/structuringyourapp –

+0

我明白這個文件夾的用途。但是在教程中(在服務器端初始化數據部分之前)是沒有這些文件的應用程序應該正常工作,但事實並非如此。所以我的問題是爲什麼這個文件必須存在才能正確工作 – kuka11

1

kuka- main.ts和load_parties.ts是那裏只是在您的數據庫中創建數據,如果沒有。因此,如果添加這些文件使其起作用,那麼從命令行創建的數據肯定有問題。我的猜測是您從命令行添加的數據轉到了錯誤的集合(即派對vs派對)。您可以通過鍵入

meteor mongo 

在您的項目的根目錄中獲取mongo提示,然後在mongo提示符下輸入

show collections 

這將顯示您數據庫中的所有集合。你應該有一個叫做'派對'的。鍵入以下內容以查看內容。

db.parties.find().pretty() 

研究數據以確保所有屬性名稱都相同。如果您創建了一個屬性調用「partyName」,並且表單正在尋找「名稱」,則不會顯示任何內容。