如何将带URL的数据传递给ui-sref?

时间:2015-02-20 23:15:18

标签: angularjs routing angular-ui-router

我认为我有:<a ui-sref="app.file({path: file.path})">{{ file.path }}</a>

file.pathhtml/hero-sidebar.html

我的州被定义为:

  .state('app.file', {
    url: '/file/*path'
    views:
      repositoryView:
        templateUrl: '/templates/app/_file.html'
  })

但是当我点击该链接时,它会转到http://localhost:9001/app/file/html%252Fhero-sidebar.html

我想要的是转到http://localhost:9001/app/file/html/hero-sidebar.html

这是否可以使用带AngularJS的ui-router?

1 个答案:

答案 0 :(得分:2)

ui-router Github中已经记录了问题,您可以找到它here

为了解决这个问题,你需要在你的配置中添加这个代码,它将负责url的编码和解码。

  

你可以覆盖内置的字符串类型(正在执行   通过注册你自己的替换&#34;字符串&#34;使用以下代码输入

<强>代码

app.config(['$urlMatcherFactory', '$stateProvider', function($urlMatcherFactory, $stateProvider) {
    //$stateProvider.state() & other code here

    function valToString(val) {
        return val != null ? val.toString() : val;
    }

    function regexpMatches(val) { /*jshint validthis:true */
        return this.pattern.test(val);
    }
    $urlMatcherFactory.type("string", {
        encode: valToString,
        decode: valToString,
        is: regexpMatches,
        pattern: /[^/]*/
    });
}]);

Working Plunkr