2014-12-01 2 views
2

У меня возникает эта странная проблема только с одним из моих взглядов. Проблема в том, что всякий раз, когда я перезагружаю его, обновляя (Cmd + R/F5) браузер, все приложение не работает, пока я не изменю маршрут (вручную или нажав ссылку). Представление разрешает некоторые данные до его рендеринга, и я могу проверить, нет ли на сервере какого-либо запроса. В основном, когда я обновляюсь, я вижу, что все мои скрипты загружены, но мой контроллер никогда не вызывается (там был console.log), и я никогда не получаю визуализированный вид.AngularJS + ui router и обновление страницы

Вот состояние

$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; 
}]) 

Я понятия не имею, почему он продолжает делать это, но это раздражает, и я хотел бы знать, что такое проблема.

+0

У вас есть состояние по умолчанию? например, используя url: '/'. Если это так, огонь? И что такое URL-адрес, как в адресной строке при обновлении? – zewa666

+0

URL-адрес тот же (правильный). У меня есть состояние по умолчанию, и оно тоже не отображается. Мой контроллер приложения не выполняется. – mart1nn

+0

Контроллер не стреляет, второй, BuyalsViewCtrl правильно? Какова цель раскола? Кроме того, ваш оригинальный PurchaseCtrl выглядит скорее как услуга, поэтому, возможно, переместите эту часть в PurchaseService. В любом случае ваш код выглядит немного запутанным, поэтому предоставление скрипки поможет найти ошибку – zewa666

ответ

1

Это не проблема с UI-маршрутизатором, но вместо вопроса, связанные с сервером, в котором при обновлении вашего браузера не указует обратно на index.html

Так что вам нужно разместить свою страницу в среде Apache и создать перенаправление, такие как создание .htaccess файл

Я это как вопрос прежде, вы можете проследить мой билет из Github

разница только, что я использую Grunt для обслуживания моего приложения, тогда я создал .htaccess вместе с моим index.html

вот что .htaccess, который я использовал для решения этой проблемы. link

Смежные вопросы