2013-11-24 2 views
0

По существу у меня есть список объектов, и пользователь может добавлять новые, введя текстовое поле. По мере ввода пользователя появляется новый объект. Однако, когда пользователь нажимает кнопку «Сохранить», объект исчезает из списка. Он успешно сохраняется в базе данных (Ruby on Rails/SQLite), поэтому он отображается при полном обновлении. Почему это делается, и как я могу заставить его оставаться на экране, когда пользователь нажимает submit?Объект исчезает из представления при сохранении в Ember.js

Вот некоторые соответствующий код:

index.hbs

<div class="messages"> 
{{#each userhashtag in controller}} 
{{render "userhashtag" userhashtag}} 
{{/each}} 
{{#link-to 'userhashtags.new'}} Add Hashtag{{/link-to}} 
</div> 
{{outlet}} 

show.hbs

{{userhashtag.name}} <button class="btn btn-dancer" type="submit" {{action "destroy"}}>Remove</button><br> 

new.hbs

<form role="form"> 
<fieldset> 
<div class="form-group"> 
    {{view Ember.TextField valueBinding='name' class='form-control' name='name' viewName='nameField'}} 
</div> 
<div class="btn-group"> 
    <button type="submit" {{action "save"}} class="btn btn-success">Submit</button> 
</div> 

маршрут

App.UserhashtagsNewRoute = Ember.Route.extend({ 
model: function(){ 
    return this.store.createRecord('userhashtag'); 
}, 
setupController: function(controller, model){ 
    controller.set('model', model); 
}, 
renderTemplate: function() { 
    this.render('app/templates/userhashtags/new'); 
}, 
actions: { 
    save: function(){ 
     return this.controller.get('model').save().then(function(){ 
      this.transitionTo('userhashtags'); 
     }.bind(this)); 
    } 
} 
}); 

ответ

0

Убедитесь, что вы вручную толкая новую модель в своей коллекции Array (не знаю, как вы управляете коллекции). Я бы предложил переместить действие #save в контроллер, где вы управляете списком объектов.

// assuming "list" is some reference to your collection list within your controller 
save: function() { 
    this.get('userhashtag').save().then(function(_model){ 
    list.pushObject(_model); 
Смежные вопросы