我有一个指令,我想传递路径
<mydirective api="/my/tomcat/server?asd=123&efg=456">
但是我得到“Lexer Error:意外的下一个字符”。我假设需要进行一些编码。有人可以建议吗?
答案 0 :(得分: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 directive doc here中了解有关指令的更多信息。
答案 1 :(得分:0)
Angular尝试评估api属性中的表达式,你必须用引号括起来:
<mydirective api="'/my/tomcat/server?asd=123&efg=456'">