Javascript AngularJS:AngularUI路由器在刷新页面时重定向到$urlRouterProvider.others路径
我有一个SPA,在后端使用Javascript AngularJS:AngularUI路由器在刷新页面时重定向到$urlRouterProvider.others路径,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我有一个SPA,在后端使用railsapi,作为前端框架使用angular 我使用的是stateProviders, $urlRouterProvider为了管理SPA中的状态,ui路由器遇到了一个小问题。每当我从Mac/Linux或从Windows点击Comand+R刷新时。它会进入刷新状态,然后立即重定向到\dashboard 我想停止这个重定向,我读过一些文章,相关的问题,还有一些github的问题,但是没有什么能让我成功 我参考过的一些参考资料 在深入研究这些之后 这是我的ui路由
railsapi
,作为前端框架使用angular
我使用的是stateProviders
,
$urlRouterProvider
为了管理SPA中的状态,ui路由器遇到了一个小问题。每当我从Mac/Linux
或从Windows
点击Comand+R
刷新时。它会进入刷新状态,然后立即重定向到\dashboard
我想停止这个重定向,我读过一些文章,相关的问题,还有一些github的问题,但是没有什么能让我成功
我参考过的一些参考资料
在深入研究这些之后
这是我的ui路由器代码:
app.coffee
'use strict'
$stateProvider
.state('app',
url: '/'
templateUrl: 'shared/app.html'
abstract: true
resolve:
company: ['CompanyResource', '$rootScope', (CompanyResource, $rootScope) ->
CompanyResource.current().$promise.then (company)->
$rootScope.app.company = company
]
user: ['Auth', '$state', '$rootScope', (Auth, $state, $rootScope)->
if !$rootScope.signedin
Auth.currentUser()
.catch ->
$state.go('login.signin')
]
)
.state('login',
template: '<div ui-view></div>'
abstract: true
resolve:
company: ['CompanyResource', '$rootScope', (CompanyResource, $rootScope) ->
CompanyResource.current().$promise.then (company)->
$rootScope.app.company = company
]
)
.state('login.signin',
url: '/signin'
templateUrl: 'templates/signin.html'
controller: 'SigninCtrl'
controllerAs: 'signin_ctrl'
)
.state('app.dashboard',
url: 'dashboard'
templateUrl: 'templates/admin/dashboard.html'
title: 'Dashboard'
controller: 'DashboardCtrl'
controllerAs: 'dashboard_ctrl'
resolve: []
)
.state('app.settings',
url: 'settings'
templateUrl: 'templates/admin/settings/base.html'
controller: 'SettingsBaseCtrl'
controllerAs: 'settings_ctrl'
resolve:
settings: ['AdminSettingsResource', (AdminSettingsResource) ->
AdminSettingsResource.query().$promise
]
)
$urlRouterProvider.otherwise '/dashboard'
angular
.module('MYAPP', [
'templates'
'ngResource'
'ngAnimate'
'ngCookies'
'ngStorage'
'ngSanitize'
'ngTouch'
'ui.router'
'ui.bootstrap'
'duScroll'
'angularMoment'
'Devise'
])
.config(['$compileProvider', ($compileProvider)->
$compileProvider.debugInfoEnabled(true)
])
.run(['$rootScope', '$state', '$stateParams', ($rootScope, $state, $stateParams) ->
FastClick.attach document.body
$rootScope.$state = $state
$rootScope.$stateParams = $stateParams
])
.config([
'$stateProvider'
'$urlRouterProvider'
])
“严格使用”
$stateProvider
.state('应用程序',
url:“/”
templateUrl:“共享/app.html”
摘要:没错
决心:
公司:['CompanyResource','$rootScope',(CompanyResource,$rootScope)->
CompanyResource.current().$promise.then(公司)->
$rootScope.app.company=公司
]
用户:['Auth','$state','$rootScope',(Auth,$state,$rootScope)->
如果!$rootScope.signedin
Auth.currentUser()
.catch->
$state.go('login.sign')
]
)
.state('登录',
模板:“”
摘要:没错
决心:
公司:['CompanyResource','$rootScope',(CompanyResource,$rootScope)->
CompanyResource.current().$promise.then(公司)->
$rootScope.app.company=公司
]
)
.state('login.sign',
url:“/signin”
templateUrl:'templates/signin.html'
控制器:“SigninCtrl”
controllerAs:“登录控制”
)
.state('app.dashboard',
url:“仪表板”
templateUrl:'templates/admin/dashboard.html'
标题:“仪表板”
控制器:“DashboardCtrl”
控制器:“仪表板控制”
决议:[]
)
.state('应用程序设置',
url:“设置”
templateUrl:'templates/admin/settings/base.html'
控制器:“SettingsBaseCtrl”
controllerAs:“设置\u ctrl”
决心:
设置:['AdminSettingsResource',(AdminSettingsResource)->
AdminSettingsResource.query().$promise
]
)
$urlRouterProvider.OR'/dashboard'
有棱角的
.module('MYAPP'[
“模板”
“ngResource”
“ngAnimate”
“小甜饼”
“NGS存储”
“消毒”
“ngTouch”
“ui.router”
'ui.bootstrap'
“杜斯克罗尔”
“角度时刻”
“设计”
])
.config(['$compileProvider',($compileProvider)->
$compileProvider.debugInfoEnabled(true)
])
.run(['$rootScope','$state','$stateparms',($rootScope,$state,$stateparms)->
FastClick.attach document.body
$rootScope.$state=$state
$rootScope.$stateParams=$stateParams
])
.config([
“$stateProvider”
“$urlRouterProvider”
])
可能与不一致地使用/URL有关,但我几乎看不懂CoffeeScript。请注意,否则
可以传递一个函数,该函数可能会帮助您跟踪问题。此外,您必须在所有服务调用上写入$promise
,尽管这是一个正交问题,但这表明$q.derfer()
和Promises
的使用通常是不正确的。这可能会对您造成伤害,并表明您可能正在编写比必须编写的代码更多的代码。对于deffer
建议,服务方法应返回承诺,而不是延迟
@AluanHaddad Ok,但我的问题不同,谢谢您的建议。。我已经转换成javascript
,并为您创建了一个gist
,请查看。这是一个我试图设置它的plunkr(根据你的要点)。丢了太多垃圾了。我不能删掉一打控制器和服务。我几乎做到了,在这里(WIP)。很抱歉,但是你不能期望有人重写所有的逻辑,发明所有的模板,删除所有的控制器(我试过了,但没有时间完成)。祝你好运另外,除了是一个糟糕的API,ngResource对于这样的问题也是糟糕的。我不得不重新创建你的所有服务,用$q
依赖项将它们剔除,删除你的8+模块('app',[…])
依赖项。这甚至不接近于最低限度的改造。