2016-08-07 6 views
0

私の目標は、あなたの投稿のリストを表示し、現在の投稿のリストの上に新しい投稿を追加するボタンです。そのボタンが{{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}} 
でposts.newテンプレートをレンダリングしたら、私は私が消えるしたいこと(「新しいポストを追加」)ボタンを持っています

コントローラ

{{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ルートまで一致しているかどうかをチェックし、そうであれば、私が望むコードブロックを表示します。

編集:

私は自分の質問に対する答えを理解しました。ここでそれを必要とする他の誰でもです。

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

+0

計算されたequalは、最初のプロパティと文字列を比較します。この場合、常にfalseになります –

答えて

2

これは、問題を修正します。今度はcurrentRouteNameが自分が望むルート(この場合は'posts.new')と等しいかどうかを確認します。そうであれば、それはtrueを返し、私は自分のテンプレート上でそのロジックを使用することができます。

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

}); 
関連する問題