这两种配置$ routeProvider的方法有什么区别?

时间:2015-05-06 19:18:32

标签: angularjs angularjs-routing

我正在学习Angular并且我已经看到了一些示例,其中$ routeProvider的配置如下:

app.config(function ($routeProvider) {
        $routeProvider.
            when("/drivers", { templateUrl: "partials/drivers.html", controller: "driversController" }).
            when("/drivers/:id", { templateUrl: "partials/driver.html", controller: "driverController" }).
            otherwise({ redirectTo: "/drivers" });
    });

在其他示例中,它的配置如下:

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.
        when("/drivers", { templateUrl: "partials/drivers.html", controller: "driversController" }).
        when("/drivers/:id", { templateUrl: "partials/driver.html", controller: "driverController" }).
        otherwise({ redirectTo: "/drivers" });
}]);

它们似乎都以相同的方式工作,但我想知道通过发送一个带有' $ routeProvider'的数组调用配置有什么区别?首先作为字符串,然后直接使用函数调用,直接使用函数,如第一个示例中所示。

感谢。

2 个答案:

答案 0 :(得分:2)

This is not specific to $routeProvider, it's every module you can declare dependencies for.

您所看到的是注入依赖项的三种不同方式中的两种(内联数组和隐式,另一种是$ inject属性),数组注入更好,因为缩小会导致问题,因为它不在数组语法中:

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.
        when("/drivers", { templateUrl: "partials/drivers.html", controller: "driversController" }).
        when("/drivers/:id", { templateUrl: "partials/driver.html", controller: "driverController" }).
        otherwise({ redirectTo: "/drivers" });
}]);

答案 1 :(得分:0)

将方括号之间的服务名称(要注入)包装到函数本身之间会使其缩小安全性。这是内联注释的方式。