有以下代码:
angular.module('app', ['app.animators', 'app.events', 'app.hotel', 'app.controllers', 'app.services', 'ui.router', 'templates', 'ngResource', 'ngCookies', 'ui.bootstrap', 'ngImgCrop', 'angularjs-dropdown-multiselect']).config(['$httpProvider', '$locationProvider', '$stateProvider', '$urlRouterProvider', ($httpProvider, $locationProvider, $stateProvider, $urlRouterProvider) ->
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content')
$urlRouterProvider.otherwise("/404")
$stateProvider.state('signIn'
url: '/admin/signin'
controller: 'SignInController'
templateUrl: 'signin.html'
)
$locationProvider.html5Mode(true)
])
它运作良好,但我将其更改为以下代码:
angular.module('app', ['app.animators', 'app.events', 'app.hotel', 'app.controllers', 'app.services', 'ui.router', 'templates', 'ngResource', 'ngCookies', 'ui.bootstrap', 'ngImgCrop', 'angularjs-dropdown-multiselect']).config(['$httpProvider', '$locationProvider', '$stateProvider', '$urlRouterProvider', ($httpProvider, $locationProvider, $stateProvider, $urlRouterProvider) ->
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content')
$urlRouterProvider.otherwise("/404")
$stateProvider.state('admin.signIn'
url: '/admin/signin'
controller: 'SignInController'
templateUrl: 'signin.html'
).state('admin'
abstract: true
)
$locationProvider.html5Mode(true)
])
它不起作用,即我输入地址'http://localhost/admin/signin'
,浏览器正在加载,但我没有获得'signin.html'模板。我需要使用'admin'状态才能对所有子状态使用'resolve'函数(我的示例不完整)。有什么麻烦?提前致谢!
答案 0 :(得分:2)
几乎每个家长应该有一个模板 - 一个 的目标。有a working plunker。
只需将此行添加到父级定义中: template: "<div ui-view></div>"
- 将使该代码正常工作:
.state('admin', {
abstract: true,
template: "<div ui-view></div>"
})
发生了什么 - 孩子确实有它的目标,它可以被注射的锚。
可能有其他解决方案,例如儿童正在定位根ui-view=""
...但上述解决方案是合适的...请参阅View Names - Relative vs. Absolute Names,查看此答案及其附带的更多absolute name targeting
检查行动here