角度路由解析返回未定义

Angular route resolve returning undefined

本文关键字:返回 未定义 路由      更新时间:2023-09-26

app.js

angular
        .module('yelp',['ngRoute'])
            .config(config);
    config.$inject=['$routeProvider','YelpServiceProvider'];
    function config($routeProvider){
        $routeProvider
            .when('/',{
            })
            .when('/restaurants',{
                templateUrl:'partials/restaurants.html',
                controller:'RestaurantsController',
                controllerAs:'rstrntsCtrl',
                resolve:{
                    restaurants:getRestaurants
                }
            });
    }
    function getRestaurants(YelpService,$route){        
        YelpService.getRestaurants($route.current.params,function(response){
            console.log(response.data.businesses); **//Data printed here**
            return response.data.businesses;
        });
    }

Controller.js

angular
        .module('yelp')
            .controller('RestaurantsController',RestaurantsController);
    RestaurantsController.$inject=['restaurants'];
    function RestaurantsController(restaurants){
        var rstrntsCtrl=this;
        console.log(restaurants);  **// got undefined here**
    }

Resolve函数进行$http调用以获取数据。然后将其传递给控制器。我可以在解析函数中打印数据,但不能将其传递给控制器(接收到未定义的数据)。有人能指出我哪里出了问题吗

我想你错过了这里的注射:

 RestaurantsController.$inject=['restaurants','YelpServiceProvider'];
function RestaurantsController(restaurants,YelpServiceProvider)

您需要在使用者(控制器)中而不是在配置中注入YelpServiceProvider(尽管您也没有完全将其注入到配置中…)