2016-03-21 10 views
1

私はAngularシングルページアプリケーションを作成しています。ここでは、複数の "ページ"を共通のビューと共通コントローラ(ui-routerを使用)でレンダリングします。使用されるデータは、サービス内の階層オブジェクトに格納され、URLコンポーネントを使用して取得されます。つまり、URLが#/getstarted/getの場合、内容はmyService.getContents().getstarted.getから読み込まれます。

これは非常にうまくいきますが、1つの例外があります。これらのページの別のページに移動するときは何も起こりません。別のページにアクセスするには、別のコントローラによって制御されているページにアクセスする必要があります。

明らかに、コントローラが再度解析されない(「console.log」のデバッグから見ることができる)、同じコントローラを持つ状態へのリンクをクリックすると、データを取得するパラメータがリフレッシュされません。

コントローラデータを無効化する方法は、(コールバックでは、module.configまたはui-srefのいくつかの呪文では)ありませんか?

答えて

0

実際にはui-srefの部分が更新されていることが判明しました。具体的には、ui-sref-opts="{reload: true}"を追加すると、コントローラのデータが再解析されます。だから私は必要な振る舞いを活性化するために、このディレクティブをテンプレートのすべてのui-srefリンクに追加しなければなりませんでした。

これはhttp://angular-ui.github.io/ui-router/site/#/api/ui.router.state.directive:ui-srefに記載されていますが、オブジェクト自体をどのようにフォーマットするかの例はありません。

0

あなたがplunkrを持っていた場合は、テストに容易になりますがバリアントをしようとするだろうof:

$stateProvider.state('somewhere', { 
    url:'/somewhere', 
    cache:false, 
    templateUrl:function(params) { 
     return 'some/calculated/path/view.html' 
    }, 
    controllerProvider:[function() { 
    return 'HomeController'; 
    }] 
}); 

templateUrlcontrollerProviderを毎回呼び出す必要があります...

+1

残念ながら、これは役に立ちません。 *名前*が関数から返されても、コントローラは再び実行されないようです。たぶん問題は、私はより多くのレベルの入れ子を持っているからです。 https://openlilylib.org/newsite/appのWebサイトスタブの一時的な場所を共有することができます(scripts/app.jsで定義されているルート(app.tabbedとその子)、コントローラ(TabbedContentController)) scripts/controllers.jsおよびscripts/services.jsのファクトリ(tabbedContentFactory) ''、 ビュー:{ のコンテンツの@ ':{ templateUrl: 'ビュー/タブ付き-content.html'、 コントローラ –

+0

は、あなたの状態は、抽象.state( 'app.tabbed'、{ URLではありません: 'TabbedContentController' } } }) – malix

+0

また、その動的ですか?ブラウザのページを更新しなくても変更されますか? もしそうなら、 'homeFactory'は状態オブジェクト全体またはそれらの配列を返すことができます。 – malix

関連する問題