将路径中的对象解析为角度为

时间:2017-10-02 10:34:42

标签: angularjs routing

我有路由配置,如下面的

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"
    };
});

在解析中检查ID是否通过$ http service检查产品ID是否有效。我还检查并返回解析对象中的产品对象。

我的控制器:

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

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

当我在控制器中传递checkId时,它会给出未知提供者的错误。 如何在控制器中获得解析对象。

由于

1 个答案:

答案 0 :(得分:2)

最后通过带有isDefined condition

的$ route获取数据
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);
        }
        });