2017-09-28 4 views
1

Iは次の構造を有する:流星、更新フォームを作成し、充填フィールド

{ 
    id: 23423-dsfsdf-32423, 
    name: Proj1, 
    services: [ 
    { 
     id:sdfs-24423-sdf, 
     name:P1_Service1, 
     products:[{},{},{}] 
    }, 
    { 
     id:sdfs-24jhh-sdf, 
     name:P1_Service2, 
     products:[{},{},{}] 
    }, 
    { 
     id:sdfs-2jnbn3-sdf, 
     name:P1_Service3, 
     products:[{},{},{}] 
    } 
    ] 
}, 
{ 
    id: 23423-cxcvx-32423, 
    name: Proj2, 
    services: [ 
    { 
     id:sdfs-xvxcv-sdf, 
     name:P2_Service1, 
     characteristics:[{},{},{}] 
    }, 
    { 
     id:sdfs-xvwqw-sdf, 
     name:P2_Service2, 
     characteristics:[{},{},{}] 
    }, 
    { 
     id:sdfs-erdfd-sdf, 
     name:P2_Service3, 
     characteristics:[{},{},{}] 
    } 
    ] 
} 

を私はこのQuickFormのと挿入フォームをスキーマ、フォームを作成する問題がありません。 しかし、私は把握(およびすべてのチュートリアルと指示を読んで、何も働いていないことを試みた)満たされたすべてのフィールドを更新フォームを作成する方法と、(また、サービスや特性アレイを拡大し、入力する必要がありカント:

enter image description here

もちろん、私が言ったように、私はサービスと特性をすべてのフィールドで適切なサイズに費やす必要があります。 しかし、フォームフィールドを埋める方法を理解できれば、 ...私が試してみた

  {{> quickForm collection="Projects" id="updateProjectForm" collection="Projects" type="method" class="update-project-form" doc=project }} 

import SimpleSchema from 'simpl-schema'; 
import { Template } from 'meteor/templating'; 
import { ReactiveVar } from 'meteor/reactive-var'; 

// Attaching the subscription to the template so we can reuse it 
Template.ProjectSingle.onCreated(function(){ 
    var self = this; 
    self.autorun(function(){ 
     var id = FlowRouter.getParam('id'); 
     self.subscribe('projectSingle', id); 
    }); 
}); 

Template.ProjectSingle.helpers({ 
    project:()=> { 
     var id = FlowRouter.getParam('id'); 
     console.log(Projects.findOne({_id: id})); 
     return Projects.findOne({_id: id}); 
    } 
}); 

私もにconsole.log()印刷を見ることはできません。

リストでこのソリューションでは、流星サーバーがクラッシュしませんでした...私が試した他のすべては、たぶん私はので、多分そこにあるパーシャルを使用していることを言及する必要があり、多くのエラー

にサーバーがクラッシュJSファイルの問題ですが、onCreatedメソッドが読み込まれているとは思いません。

10x。

EDIT:

私は更新テンプレートのための部分的に削除したし、それがメソッドを持つ独自のJSを持つルートテンプレートになりました:

projectDoc:()=> { 
    var id = FlowRouter.getParam('id'); 
    console.log("Update: " + Projects.findOne({_id: id})); 
    return Projects.findOne({_id: id}); 
} 

今、私はこの方法がある見ることができます何らかの理由で呼び出されていますが、それは2回呼び出されています。最初に正しいデータを取得して未定義になっているので、まだ何も表示されていないフィールドを取得していますが、なぜ2度呼び出されたのか分かりましたら、最初のレベルのフォーム(サービスなどはありません)を解決します

+0

'project :()=の代わりに' project { > {'。 – Styx

+0

これは問題ではありません...それは他のすべての場所で働いています、それは内部とオブジェクトですので、私はあなたのやり方を見ることができません....どんな場合でも、10xですが、これは問題ではありません.. 。 – Erez

答えて

0

解決済み私はまだこのメソッドに2つの呼び出しを持っているので、これは最善の方法ですが、これは今働いています:

projectDoc:()=> { 
    var id = FlowRouter.getParam('id'); 
    if(Projects.findOne({_id: id}) != null){ 
     console.log(Projects.findOne({_id: id})); 
     thisProject = Projects.findOne({_id: id}); 
     return Projects.findOne({_id: id}); 
    } else { 
     return thisProject; 
    } 
}