2015-10-08 6 views
1

Я пытаюсь передать свойство, которое будет использоваться в виде на другом маршруте. Для exmaple, мой contact/user/new контроллер делает следующее:EmberJS Отправка объекта другому контроллеру

var newContact = this.get('store').createRecord('contact', contactData); 
    newContact.save().then((contact) => { 
    this.transitionToRoute('contacts'); 
    this.set('successMessage', 'You have successfully created a new contact!'); 
    }) 
    .catch((response) => { 
    response.errors.forEach((error) => { 
     this.set('errorMessages', error.message); 
    }); 
    }); 

Все работает для меня, за исключением того successMessage линии.

this.set('successMessage', 'You have successfully created a new contact!'); 

Я хотел бы иметь доступ к нему на customers шаблон, так что я мог бы сделать что-то вроде:

{{#if successMessage}} 
    <div class="success-message"> 
    {{successMessage}} 
    </div> 
{{/if}} 

Если у кого есть какие-либо идеи, что было бы здорово.

+0

Вы должны направить действия и поймать его из маршрута приложения, у вас есть всплывающее уведомление в маршруте приложения –

ответ

1

Вы можете объявлять зависимости между контроллерами, используя атрибут needs.

Таким образом, вы должны добавить это в контроллер, где вы создаете запись:

needs: 'customers' // Assuming you have a CustomersController somewhere 

И вы должны установить сообщение в нужный контроллер, выполнив:

this.set('controllers.customers.successMessage', 'Fancy message'); 
+0

Я тоже пробовал это. Я добавил эту строку к моему контроллеру: : «клиенты/индекс», а затем попробовали this.set («контроллеры.клиентов/index.successMessage», «Необычное сообщение»); – WebDevDude

+0

Вам нужно указать имя контроллера в 'needs', а не маршруте. Таким образом, это должны быть «клиенты», а не «клиенты/индекс». –

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