我使用这个plunkr来解释我的问题:
在index.html中单击此链接时
<li><a ui-sref="route1({test:true})">Route 1</a></li>它转到这个链接:http://localhost:3000/#/route1?test=true
我正在尝试弄清楚如何从链接中获取文本"Route 1“,并将其用作路由url中的参数:"/route1:?test",
我希望url动态生成,如: url:"/route1:Route 1“
发布于 2014-11-21 13:47:55
有几种方法可以使路由名称成为state params的一部分,
resolve你可以让它成为你的状态的一部分(比如/:routename/?test,你可以让它成为你状态定义的属性的一部分),你可以把它附加到路由上--但是,正如你在示例中所说的,你的文本
{{ routeName }}并设置控制器中的值),或者使这个值映射到某个配置中并注入到控制器中。我认为,如果您想要像依赖URL参数一样依赖它,我建议您查看路由定义中的resolve对象,因为它似乎就是您正在寻找的对象。
不过,您需要在resolve映射之外定义实际的文本,并可能创建一个从配置模块返回值的函数,这样您还可以将该值绑定到导航栏链接。
$stateProvider
.state('route1', {
url: "/route1?test",
templateUrl: "route1.html",
resolve: {
activeRoute: function () {
//you could have a config map that you inject into this module
//or have it be a set property
return myConfigMap['route1'];
}
}
})
[...]console.log($state.current.data.customData1);
不管它必须以某种方式定义,如果你想要真正的动态url生成,你可能需要构建一个函数,它可以基于定义特定状态的参数列表来构建状态定义。
https://stackoverflow.com/questions/27054413
复制相似问题