2016-05-31 8 views
0

私はjavascriptオブジェクト配列を使って基本的なemberアプリケーションを作成しています(堅く把握するまで何も使いたくない)。新規ユーザーを追加する機能を実装する際に問題が発生しました。 私は私のコントローラに何を追加するか分からない。テンプレートで新しい日付をemberのjavascript配列に貼り付けよう

<form {{action 'add-student' on="submit"}}> 
{{input id="add-student" type="text" placeholder="student name" value=name}} 
<button class="btn btn-default" type="submit">Add</button> 
</form> 

私の学生のルート: インポートエンバー '残り火' から。

+0

'add-student'アクションをコントローラに書いてください。' this.get( 'model')。pushObject(something) 'があります。 –

答えて

1

ルートの場合は、このようなものが必要です。 Ember.RSVP.hashを使用すると、モデルから1-nのプロパティを返すことができます。

export default Ember.Route.extend({ 
    model() { 
    const store = this.get('store'); 
    return Ember.RSVP.hash({ 
     students: Ember.A([ 
      store.createRecord('student', { name: 'Vanessa'}) 
     ]), 
     someOtherModelThing: store.find('xx') 
    }) 
    } 
}); 

テンプレートには、このようなものが必要です。

{{input type="text" value=name}} 

<button class="btn btn-default" {{action "addNewStudent" name}}>Add</button> 

さらに、addNewStudentを処理するには、コントローラにアクションを記述する必要があります。

... 

    actions: { 
     addNewStudent(studentName) { 
      const store = this.get('store'); 
      var newStudent = store.createRecord('student', {name: studentName}); 
      this.get('model.students').pushObject(newStudent); 
     } 
    } 

... 

また、保存する予定がある場合は、「saveStudents」というアクションを含む保存ボタンが必要な場合があります。

saveStudents: function() { 
    return Ember.RSVP.all(this.get('model.students').invoke('save')) 
} 

テンプレート内の学生のリストを表示します。

{{#each model.students as |student|}} 
    <p> {{student.name}} 
{{/each}} 

このすべては、ember-data(store.createRecordなど)を使用せずに達成できます。プレーンなJSONとAjaxを使用してデータを保存します。

+0

「店舗」とは何ですか? this.get( 'store'); – user3494697

+0

** store **は、** emberデータ**を使用している場合のために、サーバーとの標準的な通信方法を可能にするサービスです。 [api documentation](http://emberjs.com/api/data/classes/DS.Store.html)と[guide](https://guides.emberjs.com/v2.5.0/models/defining-モデル/モデル)は、モデル、エムバーデータ、およびストアをよりよく理解するためのものです。 – alptugd

関連する問題