Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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 将数据从ngRoute resolve传递到控制器_Javascript_Html_Angularjs_Angular Services_Ngroute - Fatal编程技术网

Javascript 将数据从ngRoute resolve传递到控制器

Javascript 将数据从ngRoute resolve传递到控制器,javascript,html,angularjs,angular-services,ngroute,Javascript,Html,Angularjs,Angular Services,Ngroute,我有一个应用程序,我正在使用ngRoute生成SPA。在完成从数据库获取数据之前,我不想加载视图。下面的操作正常,但我无法将返回数据传递给我的控制器 角度服务: angular.module('routeService',[]) .factory('dataFetch', function($http, $q){ var deferred = $q.defer(); var factory = {} factory.getProposals = function(){ retu

我有一个应用程序,我正在使用ngRoute生成SPA。在完成从数据库获取数据之前,我不想加载视图。下面的操作正常,但我无法将返回数据传递给我的控制器

角度服务:

angular.module('routeService',[])

.factory('dataFetch', function($http, $q){

var deferred = $q.defer();
var factory = {}

factory.getProposals = function(){


    return $http.get('urlHere')
        .then(function(response){
            //promise is fulfilled
            deferred.resolve(response.data);

            console.log("readched the bio service!" + response.data);

            //promise is returned
           // return deferred.promise;
            return response.data;

        }, function(response){
            deferred.reject(response);

            //promise is returned
            return deferred.promise;
        });};


      return factory;

   });
var login = angular.module('login', ['ngRoute', 'routeService'])

 // configure our routes
login.config(function($routeProvider,$locationProvider) {
    $routeProvider

        // route for the home page

        .when('/', {
            templateUrl: '/overview.html',
            controller: 'login',
            resolve: {
                myDta: function(dataFetch){
                    return dataFetch.getProposals();
                }
            }

        })

});

login.controller('login', function($scope, myDta){

   $scope.prop = myDta

}) 
角度控制器:

angular.module('routeService',[])

.factory('dataFetch', function($http, $q){

var deferred = $q.defer();
var factory = {}

factory.getProposals = function(){


    return $http.get('urlHere')
        .then(function(response){
            //promise is fulfilled
            deferred.resolve(response.data);

            console.log("readched the bio service!" + response.data);

            //promise is returned
           // return deferred.promise;
            return response.data;

        }, function(response){
            deferred.reject(response);

            //promise is returned
            return deferred.promise;
        });};


      return factory;

   });
var login = angular.module('login', ['ngRoute', 'routeService'])

 // configure our routes
login.config(function($routeProvider,$locationProvider) {
    $routeProvider

        // route for the home page

        .when('/', {
            templateUrl: '/overview.html',
            controller: 'login',
            resolve: {
                myDta: function(dataFetch){
                    return dataFetch.getProposals();
                }
            }

        })

});

login.controller('login', function($scope, myDta){

   $scope.prop = myDta

}) 
我得到以下错误:

angular.module('routeService',[])

.factory('dataFetch', function($http, $q){

var deferred = $q.defer();
var factory = {}

factory.getProposals = function(){


    return $http.get('urlHere')
        .then(function(response){
            //promise is fulfilled
            deferred.resolve(response.data);

            console.log("readched the bio service!" + response.data);

            //promise is returned
           // return deferred.promise;
            return response.data;

        }, function(response){
            deferred.reject(response);

            //promise is returned
            return deferred.promise;
        });};


      return factory;

   });
var login = angular.module('login', ['ngRoute', 'routeService'])

 // configure our routes
login.config(function($routeProvider,$locationProvider) {
    $routeProvider

        // route for the home page

        .when('/', {
            templateUrl: '/overview.html',
            controller: 'login',
            resolve: {
                myDta: function(dataFetch){
                    return dataFetch.getProposals();
                }
            }

        })

});

login.controller('login', function($scope, myDta){

   $scope.prop = myDta

}) 

未知提供程序:myDtaProvider您可以使用
$route
服务访问解析的值,如前所述。 此外,你的工厂有非常恼人的事情。您正在使用全局承诺,并在出现错误时返回承诺。这是完全错误的。使用承诺的正确方法是

angular.module('routeService',[])
   .factory('dataFetch', function($http, $q) {
       var factory = {}
       factory.getProposals = function() {

          var deferred = $q.defer();
          $http.get('urlHere')
             .then(function(response) {
                 // Do what else you want to do
                 deferred.resolve(response.data);
             }, function(response) {
                 // Do what else you want to do
                 deferred.reject(response);
             });

          return deferred.promise;
       };

       return factory;
   });
并添加依赖项以解析这样的路由中的数据

 $routeProvider

    // route for the home page

    .when('/', {
        templateUrl: '/overview.html',
        controller: 'login',
        resolve: {
            myDta: function(dataFetch){
                return dataFetch.getProposals();
            }
        }

    })
您可以在
login
控制器中访问
myDep
,如下所示:

 login.controller('login', function($scope, $route) {
    $scope.myDta = $route.current.locals.myDta;
 });
以下是工作示例:

错误使用
ng controller='login'
我得到以下错误:

Unknown provider: myDtaProvider <- myDta <- login

有关详细信息,请参阅

这不是在加载控制器之前解析数据的角度方法。@MuliYulzary我只是使用
$routes
服务访问解析数据,因为直接依赖关系失败。什么是无角的?我觉得没问题。你能解释一下什么不是“角度方式”吗?直接依赖应该可以。这里还有别的东西。还有滥用q服务,但这不是一个大问题。除了一些不好的承诺实践之外,我认为您的代码没有真正的问题。您是否将
routeService.js
包含在
index.html
文件中?@MuliYulzary您能解释一下这种不好的做法吗?