2016-05-31 13 views
0

我正在用JavaScript對象數組創建一個基本的應用程序應用程序(不想使用任何其他東西,直到我得到一個牢固的把握)。我遇到問題 正在實現添加新用戶的功能。我不確定要添加到我的控制器中。推動新的日期,以支持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> 

我的學生路線: 進口灰燼從 '餘燼';

var students = [{ 
    id: 1, 
    name: 'John', 

}, { 
    id: 2, 
    name: 'Vanessa'  
}]; 

export default Ember.Route.extend({ 
    model() { 
    return students; 
    } 
}); 
+0

寫的'附加student'行動,最有可能在控制器,並有做'this.get( '模式')。pushObject(東西)'。 – 2016-05-31 05:23:08

回答

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}} 

所有這些都可以在不使用餘燼數據來實現(store.createRecord等。)。使用普通的JSON和Ajax來保存數據。

+0

什麼是'商店'? this.get( '存儲'); – user3494697

+0

**商店**是在您使用**餘燼數據**的情況下,使您能夠與服務器進行標準化通信的服務。請檢查[api文檔](http://emberjs.com/api/data/classes/DS.Store.html)和[指南](https://guides.emberjs.com/v2.5.0/models/defining-模型/)以更好地理解模型,餘燼數據和存儲。 – alptugd