Int-khab
Int-khab

Reputation: 153

Resolve object from routing resolve to controller in angular

I have routing config like following

var app = angular.module("productApp",["ngRoute"]);
app.config(function($routeProvider){
    $routeProvider.when("/",
        {
            templateUrl : "views/home.html",
            controller :  "homeController"
        }).
        when("/add/:productId?",
        {
            templateUrl : "views/products/add.html",
            controller :  "productController",
            resolve : {
                checkId: function($q,$timeout,$http,$route,$location){
                    var defer = $q.defer();
                    var productData = {};
                    var productId = $route.current.params.productId;
                    $http.get("model/checkProductById.php?productId="+productId).then(function(data){
                        if(data.data.status==1){
                            productData = data.data.data;
                            // console.log("afterthis");
                            // console.log(productData);
                            defer.resolve(productData);
                            return productData;
                        }else{
                            //defer.reject();
                            $location.path("/");

                        }
                    });

                    return defer.promise;
                }
            }
        }).
        when("/products",
        {
            templateUrl:    "views/products/view.html",
            controller:     "productController"
        });
});
app.controller("homeController",function($scope){
    $scope.model = {
        message:"Hello World"
    };
});

Check Id in resolve check if product id is valid via $http service.I also checking and returning product object in resolve object.

My controller :

app.controller("productController",function($scope, $http,productService,$routeParams,checkId){

    $scope.productId = $routeParams.productId;
    $scope.model = {
        message:"Hello World from products"
    };
}));

When i pass checkId in controller it giving error of unknown provider. How can i get resolve object in controller.

Thanks

Upvotes: 0

Views: 245

Answers (1)

Int-khab
Int-khab

Reputation: 153

Finally get the data via $route with isDefined condition

app.controller("productController",function($scope, $http,productService,$routeParams,$route){

        $scope.productId = $routeParams.productId;
        $scope.model = {
            message:"Hello World from products"
        };
        if(angular.isDefined($route.current)){
            console.log($route.current.locals.checkId);
        }
        });

Upvotes: 2

Related Questions