AngularJS反向路线

AngularJS反向路线,angularjs,Angularjs,除了在href属性中硬编码URL外,是否有其他方法可以通过$routeProvider将URL附加到控制器?如果在$routeProvider中修改路由,则必须修改模板中的所有硬编码URL,这不是很有效 例如,Django框架提供了“”实用程序函数和“”模板标记,该标记给定了“控制器”(查看函数)和返回关联URL的URL参数 是的,但是没有内置的方法来实现这一点。因为即使控制器可能绑定到$routeProvider,也不必绑定。实现它的一种方法是使您的所有控制器从BaseController继承

除了在href属性中硬编码URL外,是否有其他方法可以通过$routeProvider将URL附加到控制器?如果在$routeProvider中修改路由,则必须修改模板中的所有硬编码URL,这不是很有效


例如,Django框架提供了“”实用程序函数和“”模板标记,该标记给定了“控制器”(查看函数)和返回关联URL的URL参数

是的,但是没有内置的方法来实现这一点。因为即使控制器可能绑定到$routeProvider,也不必绑定。实现它的一种方法是使您的所有控制器从BaseController继承。此BaseCtrl将属性“currentUrl”注入范围


另一种实现方法是通过每次更改路由时更改$rootScope.currentUrl来“污染$rootScope”(这不是一个很好的主意,但会起作用)。因为所有作用域都继承自$rootScope,所以变量$scope.currentUrl将始终可用,并且在您想要的任何视图中都是最新的。

没有内置的方法可以做到这一点,但您可以使用提供反向URL的

$routeProvider:

$routeProvider.when("/product/:id/:slug", {
    templateUrl: "/product.html",
    controller: "ProductController",
    name: "product-detail"
});

$locationProvider.html5Mode(true);
$scope

{product: {id: 1, name: "Awesome Product", slug: "awesome-product"}}
从模板执行反向操作:

<a data-named-route="product-detail" data-kwarg-id="{{ product.id }}" data-kwarg-slug="{{ product.slug}}">{{ product.name }}</a>

我不确定$routerProvider,但如果您使用ui路由器而不是内置角度路由器,则可以使用$state.href,如中所述
<a data-named-route="product-detail" data-kwarg-id="{{ product.id }}" data-kwarg-slug="{{ product.slug}}">{{ product.name }}</a>
<a href="/product/1/awesome-product">Awesome Product</a>