2016-07-02 12 views
1

にデータを送信しない、私は次の応答を取得:はエンバーデータ提出

​​

私はなぜ私がnullとしてtitledescriptionを取得していますかわかりません。

routes/cards/new.js

actions: { 
    save() { 
    const newCard = this.get('store').createRecord('card', this.get('model')); 
    newCard.save().then((card) => { 
     this.transitionTo('cards.all'); 
    }); 
    }, 
    cancel() { 
    this.transitionTo('cards'); 
    } 
} 

templates/cards/new.hbs

<form> 
    <div> 
    <label>Title:</label> 
    {{input type="text" value=model.title}} 
    </div> 
    <div> 
    <label>Body:</label> 
    {{textarea rows="5" value=model.description}} 
    </div> 
    <div> 
    <button {{action 'save'}}>Speichern</button> 
    <button {{action 'cancel'}}>Abbrechen</button> 
    </div> 
</form> 

レポリンク:https://github.com/ghoshnirmalya/hub-client

+0

'console.log(this.get( 'model'))'を試してください。コールがモデルを返さない可能性があります。私はemberを使ってからしばらくしていましたが、私はそのようなあなたのビューでモデル値を割り当てることができないと思います。モデルの 'set()'メソッドを呼び出す必要があるかもしれないと思います。 – user2027202827

+0

'console.log(this.get( 'model'))'を実行すると、単にモデル関数が出力されます。 –

+0

ああええ、ごめんなさい。 'console.log(this.get( 'model.title'))'を試してください。あなたがする必要があるのは、テキスト入力値に別々のバインディングを与え、次にこの例に示すようにデータを送信する前にそのバインディングをモデルに格納することです。http://code.runnable.com/UmhZmnll6X4OAAAq/how-to- bind-models-with-views-with-ember-js-for-jquery-javascript-handlebars-js-and-html5を参照してください。繰り返しますが、これは完全に正確ではないかもしれないし、物事が変わったかもしれないので、私はemberを使ってからしばらくしています。 – user2027202827

答えて

1

あなたは適切にルーティングするために、あなたの.hbsからタイトルと説明を渡していません。アクションを保存した後、モデルを作成しています。 titleの場合はmodel.titleを変更し、説明を同じにします。あなたのルートにそれらを渡す:{{ save title description }}。次に、保存アクションに2つのパラメータ、例えばsave(title, description)を定義します。私はあなたが残りを把握できると確信しています。ここで

+0

このアプローチは、私が他のアプローチでブロックを打ったときに私に最もよく見えました。最後に –

1

は、私は通常私のルートで何をすべきかです:

setupController(controller /*, model */) { 
    this._super(...arguments); 
    Ember.set(controller, 'newCard', {}); //newCard is an empty object 
}, 
actions: { 
    save(newCard) { 
     Ember.assert('Model is missing or undefined', newCard); 
     let newCard = this.store.createRecord('card', newCard); 
     newCard.save().then((/* response */) => { 
      this.transitionTo('cards.all'); 
     }, (error) => { 
      //handle error 
     }); 
    } 
} 

そして、あなたのテンプレートでは、あなたがこのような何か行うことができます:

<form id="save" {{action "save" newCard on="submit"}}> 
    {{input name="title" id="title" value=newCard.title type="text"}} 
    <button class="button" type="submit">Save</button> 
</form> 

・ホープ、このことができますし。コメントでジェフ

1

あなたはにconsole.logをやって

(this.get( 'モデルは'))ちょうどあなたの質問への答えだモデル関数

を印刷し述べました!あなたはモデルのフック機能を持っているかもしれないからです。したがってthis.get( 'model')はmodelではなくfunctionを返します。 したがって、cards/new.jsのコントローラを作成すると、既存の保存アクションを移動できます。これはうまくいくはずです。

+0

、私はこのアプローチに従った。 –

+0

@NirmalyaGhoshあなたは、あなたがsetupController() - > this.set( 'NewCardModel'、model)に以下の行を追加して、ルート内でアクションを続けたいと思っています。 saveメソッドでthis.get( 'model')をthis.get( 'NewCardModel')に置き換えることができます。これが役立つことを願っています。 – kumkanillam