TLDR:我无法让基本状态下的解析功能工作并让我的命名视图显示正确的内容。
我有一组带有命名视图(此处的文档)的工作路线,如下所示:
$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
我需要添加一个通过承诺加载 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 视图在标记中出现了两次,而 B 视图(在索引页面上为空)根本不存在。在短期内,我认为我可以通过在状态声明之外创建一个解析函数并将其放入每个状态的解析中来解决这个问题。
还有一个复杂的问题:我的大多数控制器都在他们自己的文件中声明,所以视图行看起来像:
views:
viewA:
controller: 'adminUserList' # <<<<<<<--------- this line
templateUrl: "/partials/admin/user/list.A.jade"
viewB:
templateUrl: "/partials/admin/user/list.B.jade")