ui-router で 'controller as' を使用すると期待どおりに動作しません 質問する

ui-router で 'controller as' を使用すると期待どおりに動作しません 質問する

抽象状態とコントローラーを構文として使用して、ページの状態を次のように設定します。

# Details page route
.state 'title', 
  url: '/title',
  abstract: true,
  template: '<ui-view/>',
.state 'title.show', 
  url: '/:titleId',
  templateUrl: 'title/show.html'
  controller: 'Title as t'

このデモの目的のために、'Title' コントローラーの 't' インスタンスに変数を割り当て、これを Title コントローラー関数内で実行するとします。

angular.module('title').controller 'Title',
 ['$state', ($state) ->
   this.name = 'Test'

そして、ビュー 'title/show.html' 内で、先ほど作成した変数をページに出力しようとします。

{{t.name}}

何も表示されません。ただし、コントローラーを ui-router から削除して、次のように 'title/show.html' ページをラップする要素に移動すると、次のようになります。

<div ng-controller="Title as t">

その後、すべてがうまくいきます。この問題に遭遇した人はいますか。別のアプリでは問題なく動作しているので、このアプリで何が違うのか、js ライブラリのバージョンの違いなのかをまだ把握しようとしています。

ベストアンサー1

状態構成では:

の代わりにcontroller: 'Title as t'、以下を試してください:

controller: 'Title',
controllerAs: 't'

編集: 最小限のアプリを実装したところui-router、構文も、今日の時点での最新バージョンcontroller: Title as tの 0.2.0 で動作します。Angularスコープを調べると、インスタンスを確認できます。ui-routert

おすすめ記事