TLDR: 基本状態で解決機能を動作させることができず、名前付きビューに正しいものを表示させることができません。
次のような名前付きビュー ( docs here ) を持つ一連の作業ルートがあります。
$stateProvider.state("index",
url: ""
views:
viewA:
templateUrl: "/partials/index.A.jade"
controller: ($scope) ->
console.log('index controller') # just confirming that I'm hitting this line
viewB:
templateUrl: "/partials/index.B.jade"
)
... etc, 5+ states
promise を介して lodash をロードする解決策を追加する必要があります。
resolve: util: ($q, $window) ->
console.log 'resolving base state'
deferred = $q.defer()
require(["cdn-lodash"], (lodash) ->
util = lib: lodash, logger: $window.logger
deferred.resolve(util)
)
deferred.promise
この解決をインデックスの状態にアタッチすると、正常に動作します。しかし、私は多くの州で lodash が必要なので、すべての州に対してロードするだけです (別の方法として、このベースを「util」と呼び、それを必要とする州のベースとして追加することもできます:
$stateProvider.state('base',
abstract: true
resolve: util: ($q, $window) ->
console.log 'resolving base state'
deferred = $q.defer()
require(["cdn-lodash"], (lodash) ->
util = lib: lodash, logger: $window.logger
deferred.resolve(util)
)
deferred.promise
)
$stateProvider.state("base.index",
url: ""
views:
viewA:
templateUrl: "/partials/index.A.jade"
controller: ($scope, util) ->
debugger
console.log('index controller')
console.log util
$scope.allowAdmin = true
viewB:
templateUrl: "/partials/index.B.jade"
名前付きビューが読み込まれていないため、うまくいきません。空白のページが表示されるだけです。しかし、解決は打たれています。ページはエラーなしで正常に読み込まれ、layout.jade のページ ヘッダーなどが読み込まれます。そこで、A/B ビューをbase
状態に追加してみました。
views:
viewA: templateUrl: ''
viewB: templateUrl: ''
Crud、ビューが読み込まれるようになりましたが、正しくありません。A ビューはマークアップに 2 回ありますが、B ビュー (インデックス ページでは空) はまったくありません。短期的には、状態宣言の外に解決関数を作成し、それを各状態の解決に入れることで、これを修正できると思います。
また、もう 1 つの複雑な問題: ほとんどのコントローラーは独自のファイルで宣言されているため、views 行は次のようになります。
views:
viewA:
controller: 'adminUserList' # <<<<<<<--------- this line
templateUrl: "/partials/admin/user/list.A.jade"
viewB:
templateUrl: "/partials/admin/user/list.B.jade")