1

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")
4

0 に答える 0