2014-12-27 3 views
-1

У меня проблема при попытке отобразить другой HTML с помощью директив в AngularJS.AngularJS - ngInclude не отображает выражения в событиях

если шаблон HTML без событий, он работает просто отлично:

<button id="{{item.id}}">Some Button !</button> 

будет оказана:

<button id="123">Some Button !</button> 

но если шаблон HTML имеет некоторые события, угловое выражение не будет работать:

<button id="{{item.id}}" onmouseover="doSomething({{item.id}})">Some Button !</button> 

будет оказана:

<button id="123" onmouseover="doSomething({{item.id}}">Some Button !</button> 

Я пытался импортировать другой HTML и изменить содержимое динамически с помощью обеих директив & ngInclude, но оба они реагируют так же, когда они пытаются включить шаблон HTML.

Эта проблема возникает только в событиях (onfocus, onmouseover, onclick), и любая другая часть html успешно отображается.

Я хочу импортировать HTML и хочу, чтобы выражения были полностью заменены данными. одной из причин этого является то, что у нас есть много настраиваемых библиотек тегов JSP, которые мы хотим конвертировать в директивы AngularJS. в этих тегах есть много событий, например, наш собственный тег «Автозаполнение» имеет более 10 событий, и их можно легко преобразовать в директиву только в том случае, если угловые отображали бы наши выражения внутри этих событий (но это НЕ!)

Благодаря

+1

Вы действительно должны использовать угловые эквиваленты, такие как 'нг-mouseover'. Также, каково намерение с этим селектором jQuery в атрибуте? Это действительно не угловой способ сделать это, и вам будет очень тяжело с этим ... –

+0

Вы правы ... Я должен использовать угловые эквиваленты ... но у меня уже есть такие функции, как «doSomething() «написано в другом JS-файле, и они не в моих масштабах ... что мне делать? переписать все их для работы в угловом? Разве я не могу заставить их работать так же, как в примерах выше? Кстати, я удалил селектор jQuery ... спасибо, что упомянул об этом ... – Cypher

+0

Попробуйте 'doSomething (item.id)' вместо этого, но если функция не входит в область действия, она не будет работать ... Если функции являются глобальными, вы можете попробовать '$ window.doSomething (item.id)'. И я не думаю, что есть что-то, что мешает вам использовать 'ng-mouseover'. –

ответ

0

правильно синтаксисом для углового наведении курсора является:

<button id="{{item.id}}" ng-mouseover="doSomething(item.id)">Some Button !</button> 

этот кусок кода подразумевает, что вы уже определили $scope.doSomething() и вы используете, например ng-repeat="item in myArrayOrObject" распечатать эту кнопку на странице.

Для получения более подробной информации смотрите на документ, пожалуйста: https://docs.angularjs.org/api/ng/directive/ngMouseover

+0

Да! но дело в том, что мне нужно только «doSomething ({{item.id}}) заменить на« doSomething (123) »! Я включаю еще один HTML-код, но я хочу, чтобы все угловые выражения внутри него заменялись реальными данными, и в конце не оставалось никаких других выражений ... это даже возможно или что бы то ни было, я должен придерживаться "ng-mouseover"? – Cypher

+0

@Cypher Я не думаю, что его можно использовать onmouseover = "" afaik вам нужно ng-mouseover = "", что точно так же onmouseover = "", вы пробовали? – sbaaaang

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