2015-11-11 147 views
2

我想創建一個窗體,以便在集合中的嵌套數組內插入一個新元素。 這裏是我的架構:流星Autoform更新嵌套集合

Schemas.CampaignsSchema = new SimpleSchema({ 
    'name': { 
    type: String 
    } 
}); 
​ 
Schemas.ElectionsSchema = new SimpleSchema({ 
    'campaigns': { 
    type: [Schemas.CampaignsSchema], 
    defaultValue: [] 
    } 
}); 

這裏是我的模板:

Template.campaignsNew.helpers({ 
    schema() { return Schemas.CampaignsSchema; }, 
}); 
​ 
​ 
<template name="campaignsNew"> 
    {{#autoForm 
    collection='Elections' 
    schema=schema 
    doc=doc 
    scope='campaigns' 
    id='insertCampaignForm' 
    type='update-pushArray'}} 
    <fieldset> 
     <legend>Add a Campaign</legend> 
     {{> afQuickField name='campaigns.$.name'}} 
    </fieldset> 
    <button type="submit" class="btn btn-primary">Insert</button> 
    {{/autoForm}} 
</template> 

所以一個場是由自動窗體產生,但沒有任何反應,當我點擊提交。

如果我能Autoform.debug()我:

SimpleSchema.clean:過濾掉值會影響到關鍵的 「運動」,這是不是由架構

SimpleSchema允許的。 clean:過濾掉會影響關鍵「campaign。$」的值,這是架構不允許的

SimpleSchema.clean:過濾掉了會影響關鍵「campaign。$。name」的值,而不是允許的架構

有人有什麼想法嗎?

回答

0

看來,schema屬性#autoform不適用於類型update-pushArray

這裏是一個與代碼的reste工程模板:

<template name="campaignsNew"> 
    {{#autoForm 
    collection='Elections' 
    doc=election 
    id='insertCampaignForm' 
    type='update-pushArray' 
    scope='campaigns'}} 
    <fieldset> 
     <legend>Add a Campaign</legend> 
     {{> afQuickField name='name'}} 
    </fieldset> 
    <button type="submit" class="btn btn-primary">Insert</button> 
    {{/autoForm}} 
</template> 

唯一的問題是,name場是預填充Election名稱...

看來,您的嵌套文檔不得與主文檔具有相同名稱的字段。

然而,創建的嵌套文檔具有良好的名稱,主文檔的名稱保持不變。