2016-04-16 3 views
4

でダイナミックナビゲーションバーのアイテムを作ることができ、私は私が(訪問それぞれのページでナビゲーションバーのタイトルを変更したいですプロフィールページにいる場合は、プロフィールなどが必要です)。現在、何が起こっているかは、navbarのタイトルは常にすべてのページの "ホーム"のままです。これは、 navbarは、ブラウザでページを読み込んでいる間にonluをレンダリングし、その後はページに従って変化しません。ここでない私はそれが見えalways.Butする必要がありますように、私はapplication.hbsに配置されているナビゲーションバーのコンポーネントを持っている燃えさし

application.hbs

{{top-navbar dp_url=model.profile.dp_url first_name=model.profile.first_name title=title}} 

{{outlet}} 

は、私は、ユーザーがどのページに応じて、タイトルの値を計算しています。 currentpageここで

application.js(コントローラ)

if (currentPage === "" || currentPage === "#"){ 
     currentState.set('title',"Home") 
} 
else if(currentPage === "Userprofile"){ 
     console.log('myStudio'); 
     currentState.set('title',"UserProfile"); 
} 

は、アプリの現在のURLを持っており、私はそれを比較し、ナビゲーションバーのためのタイトルの値を決定しています。

しかし、ユーザーがブラウザでアプリをロードしたとき、私は別のルートffrom移動しない場合は、トップナビゲーションバーのタイトルの値は初回のみのために計算されます。

私もEmber.Eventedではなく、それを解決することができを試してみました。

答えて

0

currentStateはEmber.jsとEmber-dataのバージョンが分かりませんが、とにかくEmber内部のためのプライベートメソッドを使用していて、アプリケーションでの使用を意図していないようです。あなたが望むものを達成するために

可能(ただし、複雑な多分不要)の方法は次のとおりです。

  1. はあなたがナビゲーションバー(例えばnavbar-data)に変異させたい情報を持つモデルを作成します。ナビゲーションバーが表示される経路で
  2. 、それが固定された数値ID(例えばstore.createRecord('navbar-data', { id: 1, title: "index" }))を使用するためのレコードを作成して返します。
  3. (だけでなく、文字列の)コンポーネントに作成されたレコードを渡します。
  4. あなたは、変更store.peekRecord('navbar-data', 1)でレコードをのぞくと、あなたはナビゲーションバーで変更したい値を変更したいときはいつでも
  5. 。もちろん

、あなたがそのために使用するレコードがrecord.save()で保存されていない必要があります。

関連する問題