1

我有一个指令,我想传递一条路径

<mydirective api="/my/tomcat/server?asd=123&efg=456">

但是我得到“Lexer Error: Unexpected next character”。我认为需要进行一些编码。有人可以建议吗?

4

2 回答 2

2

我不确定为什么您在没有看到您的代码的情况下收到词法分析器错误,如果您可以更新帖子,我们可能会知道为什么会发生这种情况。同时,有几种方法可以检索指令中的属性值。并非所有都可以使用字符串文字。

1)隔离范围绑定:@会解析值并将与您的 HTML 一样工作。解析实际上是稍后发生的,因此该值不会立即在指令的内部方法(即link等)中可用,并且最好在指令的template方法中使用。前任。:

scope: {
    api: '@'
}

2)隔离范围绑定:如果您将表达式用单引号括起来,这将起作用,因为它将属性评估为表达式=前任。:

scope: {
    api: '='
}

在您的 HTML 中(注意单引号):

<mydirective api="'/my/tomcat/server?asd=123&efg=456'">

3)属性评估:这允许您直接从指令的内部方法评估属性字符串值,并将与您的 HTML 一样工作。前任:

link: function(scope,element,attrs){
    console.log(attrs.api);
}

您可以在此处阅读 AngularJS 指令文档中有关指令的更多信息。

于 2013-06-19T20:21:07.127 回答
0

Angular 尝试评估 api 属性中的表达式,您必须用引号将其括起来:

<mydirective api="'/my/tomcat/server?asd=123&efg=456'">

于 2013-06-19T20:13:15.203 回答