2016-08-07 2 views
0

Моя цель - опубликовать posts.index список ваших сообщений и кнопку, чтобы добавить новое сообщение над списком текущих сообщений. У меня есть кнопка («Добавить новую запись»), что я хочу исчезнуть, как только эта кнопка делает posts.new шаблон в {{outlet}}Ember 2.7: Удалить кнопку, если я нахожусь на вложенном маршруте

Мой маршрутизатор шаблон

{{router.js}} 

Router.map(function() { 
    ... 
    this.route('posts', function() { 
    this.route('new'); 
    }); 
}); 

Posts.index

{{templates/posts.hbs}} 

{{outlet}} {{!-- <- Contains the posts.new template --}} 
{{#if showButton}} 
    <p>works</p> 
{{else}} 
    <p>doesn't</p> 
{{/if}} 
{{#link-to 'posts.new' tagName='button' class="btn btn-default"}}Add a new post{{/link-to}} 

контроллер

{{controllers/posts.js}} 

export default Ember.Controller.extend({ 
    posts: Ember.inject.controller(), 
    showButton: Ember.computed.equal('posts.index', 'posts.new'), 
}); 

Сейчас showButton повторно поворачивая «нет» на обоих маршрутах, потому что я не правильно использую помощник computed.equal. То, что я пытаюсь сделать, это проверить, соответствует ли текущий маршрут до маршрута posts.new, и если это так, отобразите желаемый блок кода.

Edit:

Я понял ответ на свой вопрос. Здесь это для всех, кому это нужно.

https://stackoverflow.com/a/38819256/4761914

+0

вычисленное равное сравнивает первое свойство со строкой, в вашем случае оно всегда будет ложным –

ответ

2

Это устраняет проблему. Теперь он проверяет, равен ли currentRouteName маршруту, который я хочу ('posts.new' в этом случае). Если это так, оно возвращает true, и я могу использовать эту логику для своего шаблона.

export default Ember.Controller.extend({ 
    application: Ember.inject.controller(), 
    onNewRoute: Ember.computed.equal('application.currentRouteName', 'posts.new'), 

}); 
Смежные вопросы