当前位置: 首页 > 面试题库 >

角度ui-sref编码参数

经和歌
2023-03-14
问题内容

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

.state('project', {
        'url': '/project/*path',
        'controller': 'ProjectController',
        'templateUrl': '/pages/project.html',
    });

但是当我使用

ui-sref="project({path: mypath})"

mypath=part1/part2我期望它变成/project/part1/part2而是我得到/project/part1%252Fpart2

如何使它通过参数而不进行编码?


问题答案:

如此处所述,您需要为URL参数声明自定义变量类型,以使斜杠不被编码。引用来自github的评论:

如果您确实不希望为斜杠编码,请在regexp中注册一个自定义类型,然后声明item_id为您的自定义类型,即url:/ {item_id:MyType}

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: /[^/]+\/[^/]+/
});


 类似资料:
  • 问题内容: 我正在寻找一种可能替换掉ui-sref中的字符,同时尊重目标URL。 现在,URL如下所示: 我想摆脱%20(它们也直接在ui-sref =“”内部生成),并用减号(-)替换。 任何想法如何做到这一点? 问候,马库斯 问题答案: 注册用于封送和拆组数据的自定义类型。此处的文档:http : //angular-ui.github.io/ui- router/site/#/api/ui.

  • 如何设置swagger ui以正确编码参数列表?例如:我有一个服务,它接收以下格式的整数列表: 然而,在我的swagger-ui文档中,参数显示为单个文本字段,它需要一个逗号分隔的列表。如果我以这种格式提供参数,我会从service(使用RestEasy编写,顺便说一下)得到以下响应: 无法从超文本传输协议请求中提取参数:javax.ws.rs.QueryParam(\"id\")值为'1,2,3

  • 问题内容: 我正在尝试测试一些视图,这些视图用于链接到应用程序中的其他状态。在我的测试中,我触发了对此元素的点击,如下所示: 如果状态切换为,该如何测试?在我的控制器中像这样使用时,这很容易: 但是当我使用时,我不知道要监视什么对象。如何验证我的应用程序处于正确状态? 问题答案: 我自己找到的。在查看了角度ui路由器源代码后,我在指令中找到了以下行: 当元素收到点击时,会包装在回调中。因此,在测试

  • 问题内容: 我需要将两个参数传递并接收到要转换为使用ui-router的状态。 例如使用下面的链接将状态转换为with 和参数: 控制器中的接收和值: 我得到了在控制器中。 有人可以帮助我了解如何完成它吗? 编辑: 问题答案: 我创建了一个示例来说明如何操作。更新的定义将是: 这将是控制器: 我们可以看到,状态状态现在的url定义为: 这意味着url中的参数应为 这两个链接将正确地将参数传递给控制

  • 问题内容: 我的ui路由器状态提供程序中具有以下状态: 这遵循具有默认子状态的最佳做法,如ui-router文档中此处所述。 但是,当我现在在文档中的某处引用父级的链接时,例如,我总是收到一条错误消息,说我无法转换为抽象状态。当我在地址栏中手动输入URL并按Enter时,一切正常。 相关Plunker:http ://plnkr.co/edit/d3Z0tOwC3VCTPqGiB0df?p=pre

  • 问题内容: 您能告诉我一种禁用提交按钮的方法吗,该按钮通过以下方式变为新状态: 仅当表单有效时,才应启用该按钮。 与不起作用: app.js中的canSave函数为: 问题答案: 您可以简单地将其与之配对,这样便可以使用。 这是使用自定义指令的更理想的方式: