首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角ui-sref编码参数

角ui-sref编码参数
EN

Stack Overflow用户
提问于 2015-01-08 20:50:11
回答 3查看 5.7K关注 0票数 10

我的路由器看起来是这样的:

代码语言:javascript
复制
.state('project', {
        'url': '/project/*path',
        'controller': 'ProjectController',
        'templateUrl': '/pages/project.html',
    });

但当我用

代码语言:javascript
复制
ui-sref="project({path: mypath})"

使用mypath=part1/part2,我希望它能转化为/project/part1/part2,但是我得到了/project/part1%252Fpart2

如何使它在不编码的情况下传递参数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-08 22:13:03

由于它是在此描述,您需要为URL声明自定义变量类型,以便没有编码斜杠。引用github的评论:

如果您真的不需要为您编码的斜杠,请在regexp中注册一个自定义类型,并声明item_id为您的自定义类型,即url: /{item_id:MyType}

代码语言:javascript
复制
function valToString(val) { return val != null ? val.toString() : val; }
function valFromString(val) { return val != null ? val.toString() : val; }
function regexpMatches(val) { /*jshint validthis:true */ return this.pattern.test(val); }
$urlMatcherFactory.type("MyType", {
  encode: valToString,
  decode: valFromString,
  is: regexpMatches,
  pattern: /[^/]+\/[^/]+/
});
票数 10
EN

Stack Overflow用户

发布于 2015-05-27 06:36:58

要解决这个问题,可以使用$location.path()更改状态,它在stateparams中有斜杠。例如,如果我们的状态是这样的:

app.js

代码语言:javascript
复制
.state('project', {
    'url': '/project/*path',
    'controller': 'ProjectController',
    'templateUrl': '/pages/project.html',
});

在本例中,path param可能包含多个斜杠,.If path=part1 1/part1 2,然后使用ui-sref$state.go()获得类似于此的/project/part1%252Fpart2路由。因此,要获得正确的路由(即/project/part1/part2),可以使用$location.path()来更改状态。

HTML:

代码语言:javascript
复制
<a ng-click="goToMyState()">{{label}}</a>

主计长:

代码语言:javascript
复制
$scope.goToMyState = function () {
    var path = '/part1/part2'
    $location.path('/project' + path);
};
票数 2
EN

Stack Overflow用户

发布于 2017-04-06 21:10:44

在新的ui-路由器1.0中,我们可以使用raw:true param,这将禁用这里描述的参数的url编码。

代码语言:javascript
复制
    //link to state
<md-button ui-sref="content({slug:'hello-world/'})">Hello world</md-button>

$urlMatcherFactoryProvider.type('SlashFix', {
      raw:    true,
    });


    $stateProvider
      .state('content',{
       url: '/{slug:SlashFix}',
       ...

更详细的解释可以在这里找到:

https://www.coditty.com/code/angular-ui-router-replacing-slash-with-2f-quick-fix

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27849260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档