Я не уверен, почему вы получаете ошибку лексического анализатора, не видя кода, если вы можете обновить сообщение, мы сможем узнать, почему это происходит. Тем временем, есть несколько способов получить значение атрибута в вашей директиве. Не все будут работать со строковым литералом.
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.
Я не сделал ни слова, но это может быть лучше, чем комментарий. – sh0ber
Одиночные кавычки помогли мне также сделать следующее в моей ссылке функции link: function (scope, element, attrs) { scope.server = attrs ['server']; scope.api = attrs ['api'] } – wmitchell