Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:AngularUI路由器在刷新页面时重定向到$urlRouterProvider.others路径_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript AngularJS:AngularUI路由器在刷新页面时重定向到$urlRouterProvider.others路径

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路由

我有一个SPA,在后端使用
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',[…])
依赖项。这甚至不接近于最低限度的改造。