2014-12-31 11 views
0

내 컨트롤러가 마지막으로 실행될 때 올바른 페이지를 가져 오는 데 필요한 정보가있는 AngularJS 부트 스트랩 메소드에서 웹 서비스를 호출하려고합니다. 아래 코드의 문제는 물론 $ root.post가 내 $ http.post (..)에 정의되어 있지 않다는 것입니다. ...

원하는 데이터로 나의 응답이 돌아오고 MultiHome Controller는 ? $ rootScope이 지점에서 설정된 경우. 어떻게 내 각 문서 준비 방법에 $ rootScope에 액세스하거나이를 할 수있는 더 좋은 방법이 수 일

angular.module('baseApp') 
     .controller('MultihomeController', MultihomeController); 

    function MultihomeController($state, $rootScope) { 


     if ($rootScope.codeCampType === 'svcc') { 
      $state.transitionTo('svcc.home'); 
     } else if ($rootScope.codeCampType === 'conf') { 
      $state.transitionTo('conf.home'); 
     } else if ($rootScope.codeCampType === 'angu') { 
      $state.transitionTo('angu.home'); 
     } 
    } 

    MultihomeController.$inject = ['$state', '$rootScope']; 

    angular.element(document).ready(function() { 

     var initInjector = angular.injector(["ng"]); 
     var $http = initInjector.get("$http"); 
     $http.post('/rpc/Account/IsLoggedIn').then(function (response) { 

      $rootScope.codeCampType = response.data 

      angular.bootstrap(document, ['baseApp']); 
     }, function (errorResponse) { 
      // Handle error case 
     }); 


    }); 

답변

1

$ scope (및 $ rootScope)은 컨트롤러와 뷰 사이에 접착제 역할을한다고 가정합니다. 사용자, 신원 또는 보안과 같은 응용 프로그램 유형 정보를 저장하는 데 사용하지 않을 것입니다. 이를 위해 constant 메서드 또는 factory (더 많은 로직을 캡슐화해야하는 경우)을 사용합니다. 상수 사용

예 : 우리는 응용 프로그램을 부트 스트랩하고 있기 때문에

var app = angular.module('myApp',[]); 

app.controller('MainCtrl', ['$scope','user', 
function ($scope, user) { 
    $scope.user = user; 
}]); 

angular.element(document).ready(function() { 
    var user = {}; 
    user.codeCampType = "svcc"; 
    app.constant('user', user); 
    angular.bootstrap(document, ['myApp']);  
}); 

참고, 당신은보기에 NG-응용 프로그램 지침을 제거해야합니다.

0

당신은 얻을 것이다 run() 블록을 설정할 수 있습니다 부트 스트랩하는 동안 실행 됨 :

baseApp.run(function($rootScope) { 
    $rootScope.codeCampType = response.data; 
}); 
angular.bootstrap(document, ['baseApp']); 

부트 스트랩하기 전에 스코프가 생성되지 않기 때문에 인젝터를 사용할 수 있습니다. config() 블록이 제대로 작동하면 필요한 곳에 데이터를 주입 할 수 있습니다.

관련 문제