Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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+;用户界面路由器和页面刷新_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript AngularJS+;用户界面路由器和页面刷新

Javascript AngularJS+;用户界面路由器和页面刷新,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我只有一个观点有这个奇怪的问题。问题是,每当我通过刷新(Cmd+R/F5)浏览器重新加载它时,整个应用程序都无法工作,直到我更改路线(手动或单击链接)。视图在呈现之前解析一些数据,我可以验证是否没有对服务器的任何请求。基本上,当我刷新时,我看到我的所有脚本都已加载,但我的控制器从未被调用(在那里有一个console.log),我也从未得到渲染的视图 这是州政府 $stateProvider.state( 'purchases', { url: '/purchases',

我只有一个观点有这个奇怪的问题。问题是,每当我通过刷新(Cmd+R/F5)浏览器重新加载它时,整个应用程序都无法工作,直到我更改路线(手动或单击链接)。视图在呈现之前解析一些数据,我可以验证是否没有对服务器的任何请求。基本上,当我刷新时,我看到我的所有脚本都已加载,但我的控制器从未被调用(在那里有一个console.log),我也从未得到渲染的视图

这是州政府

    $stateProvider.state( 'purchases', {
    url: '/purchases',
    views: {
      "main": {
        controller: 'PurchasesCtrl',
        templateUrl: 'purchases/purchases.tpl.html'
      }
    },
    resolve: {
      purchases: function(PurchasesService, $rootScope) {
        return PurchasesService.getPurchasesForUser($rootScope.user._id);
      }
    },
    data:{ pageTitle: 'Purchases' }
  });
  $stateProvider.state( 'purchases_buy', {
    url: '/purchases/buy/{itemId:[0-9a-fA-F]{24}}',
    views: {
      "main": {
        controller: 'PurchasesBuyCtrl',
        templateUrl: 'purchases/purchases_buy.tpl.html'
      }
    },
    resolve:{
      item:  function(ItemsService, $stateParams){
        return ItemsService.getItem($stateParams.itemId);
      }
    },
    data:{ pageTitle: 'Buy' }
  });
这是控制器:

.controller( 'PurchasesCtrl', ['$scope', 'PurchasesService', '$stateParams', 'purchases', function (    $scope, PurchasesService, $stateParams, purchases ) {
  $scope.purchases = purchases.data;
  console.log("loaded");
  $scope.predicates = ['firstName', 'lastName', 'birthDate', 'balance', 'email'];
  $scope.selectedPredicate = $scope.predicates[0];
}])

.controller( 'PurchasesViewCtrl', ['$scope', 'PurchasesService', '$stateParams', 'purchase', function ( $scope, PurchasesService, $stateParams, purchase ) {
  $scope.purchase = purchase.data;
}])

我不知道它为什么一直这样做,但这很烦人,我想知道问题出在哪里。

这不是UI路由器的问题,而是与服务器相关的问题,在刷新浏览器时,它不会指向index.html

因此,您需要在Apache环境中托管页面,并创建重定向,例如创建.htaccess文件

我以前有过这个问题,你可以从

唯一不同的是,我使用Grunt为我的应用程序提供服务,然后我创建了一个.htaccess和我的index.html


下面是我用来解决这个问题的.htaccess要点

你有默认状态吗?与使用url“/”的类似。如果是这样的话,这个会开火吗?刷新时地址栏中的url是什么样的?url是相同的(正确的)。我有一个默认状态,它也不会呈现。未执行我的应用程序控制器。未启动的控制器是第二个,PurchasesViewCtrl,对吗?分裂的目的是什么?除此之外,您最初的PurchasesCtrl看起来更像一个服务,所以可能会将该部分移动到PurchasesService中。无论如何,您的代码看起来有点混乱,因此提供一个小提琴将有助于找到错误