

AngularJSでui-routerを使用していますが、画面の構成をJavaのTilesのように制御したいです。

複数の画面機能が存在し、同様に複数の共通パーツ機能が存在します。  
特定の画面機能でどの共通パーツを表示するかは、  
JSONファイル等で管理したいです。

画面A,Bがあるときに、パーツCを各画面で利用する場合を考えます。  
画面Aの$stateProvider#stateの設定で、viewでパーツCを定義すれば、  
ui-viewで表示できることは認識していますが、  
この方法だと画面Bの$stateProvider#stateの設定も必要になると思っています。

画面A,Bの設定とは別に、パーツCのstate設定だけしておいて、  
それを各画面にインクルードできないかと考えたのですが、よい方法がわかりません。

今はng-includeでインクルードしていますが、この方法だと、  
別の都合で、パーツCのコントローラを変更しにくくなってしまうのでどうしたものかと。。。

追記  
パーツをライブラリ化して異なるアプリから利用する場合、  
各アプリでパーツのコントローラの変更を行おうと思うと、  
下記のように設定する必要があり、ng-includeでは、指定先のHTMLにコントローラが  
記載されているので、実現できない。

ライブラリ側

[code]

    angular.module('lib').config(function() {
      $stateProvider.state('partsState', 
        {url: '...', templateUrl: 'hoge.html', controller: 'orgCtrl'});
    });
    
[/code]

アプリ側

[code]

    angular.module('app', [lib])..run(function($state) {
      $state.get('org').controller = 'customCtrl';
    });
    
[/code]


CC BY-SA 3.0
2015-05-19T05:54:05.160
10359
2015-08-10T08:19:03.467
2015-06-11T07:52:26.680
9790
9790
question
javascript angularjs
AngularJSのui-routerでtilesのような振る舞いをしたい


UI-Routerで設定したいが、現在はng-includeを使っているということですが、  
私には、カスタムディレクティブを作って解決するのが一番いいような感じがしました。

> パーツCのコントローラを変更しにくくなってしまうのでどうしたものかと。。。

ここの意味がちょっとはかりかねたのですが、カスタムディレクティブは、コントローラとテンプレートのセットみたいなものなので、パーツを定義するにはちょうどいいのではないかと思います。

勝手に想像するに、パーツCはウィジェット（や、ポータレット）のように画面AやBとは独立して機能し画面遷移するために、画面Aや画面Bとは別に定義しておきたいという意図なのだとおもっているのですが、そうなるとパスと結びつかなくなるのでちょっと、やりたいことが把握できないでいます。

こんな風に$stateProvide.state(..)ってかければいいのに！という見本があれば、  
もう少しはわかるかもしれません。


CC BY-SA 3.0
2015-06-03T14:50:29.933
10956
2015-06-03T14:50:29.933
9983
10359
answer