15

<title>場所(ルート)が変わるたびにページのタグを更新したい。の現在のルートの変更を観察することに特に興味がApp.Routerあります。次に、そのルートに関連付けられているビューにアクセスし、ビュー<title>のプロパティに基づいてオブザーバーからタグを更新したいと考えています。

たとえば、/about

  1. オブザーバーを監視するように設定するにはどうすればよいですか? currentState観察するプロパティまたは同等のものを見つけるのに問題があります。
  2. オブザーバー内でApp.AboutView、ルートに関連付けられた にアクセスするにはどうすればよいですか?

私は使用しています1.0.0pre4


私の目標は、オブザーバーが動作する各ビューにtitleプロパティとプロパティを設定することです。プロパティを使用してを更新し、プロパティ オブジェクトを使用して、現在のユーザーがルートにアクセスできるかどうかを確認します。authorizationcurrentPathtitledocument.titleauthorization

これと@Michael Grassottiの答えを言うと、おそらくこれらのプロパティはViewではなくControllerに属します。目標は、現在のルートのコンテキストに関連付けられているこれらのプロパティにアクセスして を変更し、(ログインしているユーザーのオブジェクト モデルを格納する) my が現在のルートにアクセスする権限を持ってdocument.titleいるかどうかを確認することです。App.CurrentUserController User

4

2 に答える 2

16
  1. オブザーバーを監視するように設定するにはどうすればよいですか? 観察する currentState プロパティまたは同等のプロパティを見つけるのに問題があります。

を観察できますApplicationController.currentPath。例えば:

App.ApplicationController = Ember.Controller.extend({
  currentPathDidChange: function() {
    path = this.get('currentPath');
    console.log('path changed to: ', path);
    window.document.title = path;
  }.observes('currentPath')
});
  1. オブザーバー内で、ルートに関連付けられた App.AboutView にアクセスするにはどうすればよいですか?

このオブザーバーからアクセスしようとするApp.AboutViewのは難しく、おそらく良い考えではありません。このシナリオでビューのプロパティが役立つ理由がよくわかりません。詳しく教えていただけますか?

于 2013-01-19T21:25:21.153 に答える
7

したがって、私が操作しようとしているプロパティは、ビューではなく、ルートのコントローラーに属しています。

いくつかのルートを考えるとcontactUs、コントローラーは次のようになります

App.ContactUsController = App.AppController.extend({
  title: "Contact Us"
});

私のApp.ApplicationController今のように見えることができます

App.ApplicationController = Ember.Controller.extend({
  updateTitle: function() {
    window.document.title = this.controllerFor(this.currentPath).get('title');
  }.observes('currentPath')
});

だから私が探していたAPIメソッド/プロパティは

  • App.ApplicationController.get('currentPath') (現在、サイトには記載されていないようです)
  • controllerFor (これも文書化されていないようですが、のreopen実装内で見つかりますEmber.ControllerMixin)
于 2013-01-19T22:17:57.957 に答える