Проблема с областью Angular-seed

В настоящее время я пытаюсь создать сообщение, которое запускается перед каждым routeProvider. В настоящее время я получаю сообщение о том, что $http не определен, и я не знаю, почему. В настоящее время я пытаюсь передать $http функции, и, согласно phpstorm, $http является «неопределенным» и не знаю, почему. Я объявляю angular.js перед validation.js в index.html.

<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="components/universal/validation.js"></script>   

И мой app.js выглядит так:

'use strict';

angular.module('myApp', [
  'ngRoute',
  'myApp.view1',
  'myApp.view2',
  'myApp.test',
  'myApp.version'
]).
config(['$routeProvider','$http', function($routeProvider,$http) {
    alert ('before call');
    var temp = sessionValidation($http);
    alert('temp : '+temp);
    $routeProvider.otherwise({redirectTo: '/view1'});
}]);

Компоненты/универсальные/validation.js

function sessionValidation($http) {
alert('before post');
return $http({
    url: 'http://255.255.255.255/rip.dll/REST/SESSIONS/',
    method: 'POST',
    dataType:"json",
    xhrFields :{"withCredentials" : true},
    data: {'logintype':'1','host':'255.255.255.255','user':'Administrator','password':'1234','controlid':'ABC999'}
})
    .success(function (data) {
        return data.stats;
    })
    .error(function () {
        return 'Error';
    });
}

И браузер отображает это:

введите здесь описание изображения

И вот сообщение об ошибке.

Любая помощь или указание в правильном направлении, почему $http не установлен, были бы полезны. Спасибо. Если вам нужна какая-либо другая информация, пожалуйста, дайте мне знать, чтобы я мог обновить вопрос.

Службу

<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="components/universal/validation.js"></script>   
нельзя использовать на этапе
'use strict';

angular.module('myApp', [
  'ngRoute',
  'myApp.view1',
  'myApp.view2',
  'myApp.test',
  'myApp.version'
]).
config(['$routeProvider','$http', function($routeProvider,$http) {
    alert ('before call');
    var temp = sessionValidation($http);
    alert('temp : '+temp);
    $routeProvider.otherwise({redirectTo: '/view1'});
}]);
, так как поставщик может быть еще не готов. Здесь вы можете использовать свойство
function sessionValidation($http) {
alert('before post');
return $http({
    url: 'http://255.255.255.255/rip.dll/REST/SESSIONS/',
    method: 'POST',
    dataType:"json",
    xhrFields :{"withCredentials" : true},
    data: {'logintype':'1','host':'255.255.255.255','user':'Administrator','password':'1234','controlid':'ABC999'}
})
    .success(function (data) {
        return data.stats;
    })
    .error(function () {
        return 'Error';
    });
}
в методе _4_:


person Sari Rahal    schedule 08.09.2015    source источник


Ответы (1)


Будет ли это работать до того, как routeProvider отобразит представление?

'use strict';

angular.module('myApp', [
  'ngRoute',
  'myApp.view1',
  'myApp.version'
]).
config(['$routeProvider', function($routeProvider) {
    $routeProvider
        .when('/view1', {
            resolve: {
                sessionValidation: function($http) {
                    return sessionValidation($http);
                }
            }
        })
        .otherwise({redirectTo: '/view1'});
}])
person Rohit Jain    schedule 08.09.2015
comment
@SariRahal Я не уверен. Но это должно быть. _1_ вызывается сразу после инициализации всех поставщиков услуг. Можете попробовать, я сам не пробовал. - person Sari Rahal; 08.09.2015
comment
Это не запускается каждый раз, когда запрашивается новое представление. - person Rohit Jain; 08.09.2015
comment
@SariRahal Хорошо. В конфигурации _2_ есть что-то под названием _1_, которое вызывается перед рендерингом вида. - person Sari Rahal; 08.09.2015
comment
@SariRahal Можете ли вы попробовать обновленный код? Я добавил конфигурацию маршрута для resolve. Вы можете соответствующим образом изменить свою конфигурацию - $routeProvider. - person Rohit Jain; 08.09.2015
comment
Кажется, что в angular-seed много «решимости». Не могли бы вы указать мне правильное направление? - person Rohit Jain; 08.09.2015
comment
Давайте продолжим обсуждение в чате. - person Sari Rahal; 08.09.2015
comment
Вы должны определить это свойство _1_ в файлах _2_ и _3_. - person Sari Rahal; 08.09.2015
comment
хорошо, кажется, работает все, кроме одного. он проверяет, но каждый раз отображает только view1. - person Rohit Jain; 08.09.2015
comment
@SariRahal Вы настроили все представления? Я не вижу там _1_ импортированного. Вы пытаетесь использовать это? - person Sari Rahal; 08.09.2015
comment
Да, я просто удалил часть кода, чтобы он был чище для stackOverflow. Я вернул этот код, а также обновил ваш ответ тем, что у меня есть. - person Rohit Jain; 08.09.2015
comment
@SariRahal Вам не нужно перенастраивать _1_ и _2_ в _3_. Они уже настроены в _4_ и _5_. Просто определите свойство _6_ в этих файлах. Я просто положил его здесь, чтобы дать представление. - person Sari Rahal; 08.09.2015
comment
Спасибо. Это было не то, о чем я думал, но это привело меня туда, где я должен был быть. Я больше стремился избежать использования одного и того же кода в каждом поставщике маршрутов. - person Rohit Jain; 08.09.2015
comment
@SariRahal Взгляните на это - spin.atomicobject.com /2014/10/04/, чтобы удалить дублирование - person Sari Rahal; 08.09.2015
comment
@SariRahal Проверьте это тоже: github.com/btford/ngmin/issues/23 , вы можете переместить код аутентификации сеанса в службу и внедрить его в _1_. - person Rohit Jain; 08.09.2015
comment
Из того, что я читал, замена этого кода службой - это путь. Спасибо, я обновлю свой код правильным ответом, когда все заработает. - person Rohit Jain; 08.09.2015
comment
[$injector:modulerr] Не удалось создать экземпляр модуля myApp из-за: Ошибка: [$injector:unpr] Неизвестный провайдер: $http http://errors.angularjs.org/1.4.5/$injector/unpr?p0=%24http в анонимной функции (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:4284:13) в getService (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:4432:11) при вызове (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:4461:9) в runInvokeQueue (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:4379:11) в анонимной функции (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:4388:11) в forEach (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:336:11) в loadModules (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:4369:5) в createInjector (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:4294:3) в doBootstrap (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:1655:5) в начальной загрузке (http://localhost:90/angular-seed/app/bower_components/angular/angular.js:1676:5) http://errors.angularjs.org/1.4.5/$injector/modulerr?p0=myApp&p1=Error%3A%20%5B%24injector%3Aunpr%5D %20Unknown%20provider%3A%20%24http%0Ahttp%3A%2F%2Ferrors.angularjs.org%2F1.4.5%2F%24injector%2Funpr%3Fp0%3D%2524http%0A%20%20%20at%20Anonymous%20function %20(http%3A%2F%2Flocalhost%3A90%2Fangular-seed%2Fapp%2Fbower_components%2Fangular%2Fangular.js%3A4284%3A13)%0A%20%20%20at%20getService%20(http%3A%2F% 2Flocalhost%3A90%2Fangular-seed%2Fapp%2Fbower_components%2Fangular%2Fangular.js%3A4432%3A11)%0A%20%20%20at%20invoke%20(http%3A%2F%2Flocalhost%3A90%2Fangular-seed%2Fapp %2Fbower_components%2Fangular%2Fangular.js%3A4461%3A9)%0A%20%20%20at%20runInvokeQueue%20(http%3A%2F%2Flocalhost%3A90%2Fangular-seed%2Fapp%2Fbower_components%2Fangular%2Fangular.js% 3A4379%3A11)%0A%20%20%20at%20Anonymous%20function%20(http%3A%2F%2Flocalhost%3A90%2Fangular-seed%2Fapp%2Fbower_components%2Fangular%2Fangular.js%3A4388%3A11)%0A% 20%20%20at%20forEach%20(http%3A%2F%2Flocalhost%3A90%2Fa ngular-seed%2Fapp%2Fbower_components%2Fangular%2Fangular.js%3A336%3A11)%0A%20%20%20at%20loadModules%20(http%3A%2F%2Flocalhost%3A90%2Fangular-seed%2Fapp%2Fbower_components%2Fangular %2Fangular.js%3A4369%3A5)%0A%20%20%20at%20createInjector%20(http%3A%2F%2Flocalhost%3A90%2Fangular-seed%2Fapp%2Fbower_components%2Fangular%2Fangular.js%3A4294%3A3) %0A%20%20%20at%20doBootstrap%20(http%3A%2F%2Flocalhost%3A90%2Fangular-seed%2Fapp%2Fbower_components%2Fangular%2Fangular.js%3A1655%3A5)%0A%20%20%20at% 20bootstrap%20(http%3A%2F%2Flocalhost%3A90%2Fangular-seed%2Fapp%2Fbower_components%2Fangular%2Fangular.js%3A1676%3A5) - person Sari Rahal; 10.09.2015