2015-10-11 3 views
0

Я создаю некоторые CRUD ember.js 2.1.0 2.1.0/Ember-данных с Ruby On Rails 5.ember.js Сброс переменной маршрута при изменении модели

contacts У меня есть и contacts/show маршрут

Когда я нажимаю элемент в списке, текущий маршрут изменится на маршрут contacts/show.

и contacts/show имеет isEdit переменная для встроенного редактирования. , но я ожидаю, что isEdit сбрасывается, когда я нажимаю другой элемент.

проверить мою консоль, когда beforeModel, afterModel и setupController, все мои тестовые косы false вне. но это не связано с isEdit и шаблоном.

я нажимаю кнопку редактирования isEdit изменяется true

<p> 
{{#if isEdit}} 
<button {{action "save"}}>SAVE</button> 
<button {{action "cancel"}}>CANCEL</button> 
{{else}} 
<button {{action "edit"}}>EDIT</button> 
{{/if}} 
</p> 

мои контакты/показать шаблон

 save: function() { 
     var controller = this.controller; 
     var item = controller.get('model'); 
     if(!item.get('title') || item.get('title') === '') { 
      item.rollbackAttributes(); 
      controller.set('isEdit', false); 
     } else {    
      item.save(); 
      controller.set('isEdit', false);    
     } 
    }, 

это работает хорошо, но я не могу получить «ложный» на загруженном новой модели

Как я устанавливаю isEdit false, когда меняю тот же маршрут и другую модель?

ответ

0

Лучшее место для этого в моем опыте - при входе в маршрут, установив значение в крюке setupController. Это гарантирует, что каждый раз, когда вы переходите к нему, isEdit будет установлен в false.

Вот пример кода:

app/routes/contacts/show.js

import Ember from 'ember'; 

const { set } = Ember; 

export default Ember.Route.extend({ 
    setupController(controller) { 
    set(controller, 'isEdit', false); 
    } 
}); 
+0

Спасибо Джон. Я попробовал 'this.set (контроллер, 'isEdit', false);' измените это на Ember, он хорошо работает –

Смежные вопросы