2013-06-19 3 views
0

У меня есть директивы, которые я хотел бы передать путьпрохождения пути в качестве angularjs директивы

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

Однако я получаю «Лексер Ошибка: Неожиданный следующий символ». Я предполагаю, что необходимо кодирование. Может кто-нибудь советовать?

ответ

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.

0

Угловая попытка оценить выражение в атрибуте апи, вы должны окружить его в кавычки:

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

+0

Я не сделал ни слова, но это может быть лучше, чем комментарий. – sh0ber

+0

Одиночные кавычки помогли мне также сделать следующее в моей ссылке функции link: function (scope, element, attrs) { scope.server = attrs ['server']; scope.api = attrs ['api'] } – wmitchell

Смежные вопросы