2015-01-10 55 views
2

有下面的代碼:角不加載狀態

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'模板。我需要使用「管理」狀態才能爲所有子狀態使用「解析」功能(我的示例並未完成)。有什麼麻煩?提前致謝!

回答

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

更多的例子plunker檢查它在行動here