AngularJS-路由器UI-定义通配符父级状态
AngularJS - Router UI - Defining a wildcard parented state
Fellas,Fellaaas。我是用手机写信的,所以请原谅我有任何误导或不清楚的地方。在我的应用程序中,有一个状态可以从任何其他父状态继承,称为"deals/:dealId:"。到目前为止,我必须为任何其他可用的父状态反复定义相同的状态,这样才能从应用程序上的任何URL访问它。例如:父状态"dashboard"有一个子状态"parent.dashboard.teals",还有另一个状态——"parent.looking.deals",依此类推。在谷歌上搜索解决方案时,我在plunkr上找到了一个使用父状态变量定义创建通配符状态环境的示例:.state(currentState+".teals")。"天啊,天啊",我心想。这正是我所需要的。嗯,不是。我在一个静态的"currentState"变量上测试了它,它运行得很好,我只想在父状态切换之间动态地更改currentState变量。看起来,当angular在加载时第一次生成路由时,它将默认的"currentState"var作为字符串,并将该状态定义为static。因此,即使我在路由更改之间更改默认的"currentState"var,该状态也只能用于第一个生成的状态定义。非常感谢。
我在GitHub上发布了一个功能请求,以防我是第一个需要这个场景的人,或者同时没有合适的解决方案:github.com/angular-ui/ui-router/issues/1014
无论如何,我通过循环遍历父状态并将静态子状态附加到它们上来解决这个问题,而不是手动定义它们:
angular.forEach(states, function(stateOptions,stateName) {
$stateProvider.state(stateName, stateOptions.options);
if (stateOptions.defaultState){
var dealStateName = stateName+'.deals';
console.log(dealStateName);
$stateProvider.state(dealStateName,{
url: (stateName=='parent.dashboard') ? "deals/:dealId" : "/deals/:dealId",
views:{
'fsItem@parent':{
templateUrl: "/static/html/fsItems/dealNewD.html",
controller: 'dealCtrl',
}
}
});
}
});
这个问题还不太清楚,但听起来你想要一个在路由更改之间持续存在的状态变量。我建议使用工厂或服务。看看AngularJS中的控制器之间共享变量。
- JavaScript中的通配符日期形式
- JavaScript上的通配符(也许这不费吹灰之力?)
- 带有通配符的姓氏Reg表达式
- Mongoose:布尔型'或者'使用通配符查询
- jQuery的通配符委派
- 聚合物和页面.js路由中的通配符
- javascript中通配符搜索的正则表达式
- Node.js/Expss.js.如果与通配符路由器一起使用,则无法识别静态路由器
- 如何在JQuery中使用带有.html的通配符
- 如何解释BusterJS测试路径中的通配符
- Javascript-IF语句中的通配符
- jQuery选择器中的通配符
- 函数调用中的javascript通配符
- OData:对url请求中的数字(ID)字段进行通配符(startswith)筛选
- Javascript:通配符正则表达式搜索
- Javascript/Jquery.使用带通配符的正则表达式将纯文本替换为html
- 将通配符与javascript拆分函数结合使用
- 使用javascript's替换为通配符以更改字符串中的width属性
- Grunt-Uglify通配符和版本控制
- AngularJS-路由器UI-定义通配符父级状态