Как передать angular переменную js внутри функции onclick в качестве параметра
Я попытался передать переменную AngularJS в качестве значения аргумента внутри onclick(), чтобы вызвать функцию javascript. Может ли кто-нибудь вести меня о том, как это сделать?
Мой код:
<div onclick="deleteArrival({{filterList.id}})" class="table-icon deleteIcon">{{filterList.id}}</div>
Ответы
Ответ 1
Вы должны использовать ng-click, нет причины использовать onclick, поскольку angular предоставляет вам эту функциональность
<div ng-click="deleteArrival(filterList.id)"
class="table-icon deleteIcon">{{filterList.id}}</div>
Затем вы должны перенести свою функцию в свой контроллер AngularJS и привязать ее к области
$scope.deleteArrival = function(filterListId) { ... };
Если вам необходимо использовать onclick для вызова внешней функции, вы можете изменить функцию на что-то подобное в своей области, все еще используя атрибут ng-click выше:
$scope.deleteArrival = function(filterListId) { window.deleteArrival(filterListId); };
Однако я не вижу причины не перемещать его в область видимости
Ответ 2
Вы можете легко решить свою проблему, используя ng-click
, но у вас должен быть метод deleteArrival
в вашей области.
Разметка
<div ng-click="deleteArrival(filterList.id)" class="table-icon deleteIcon">
{{filterList.id}}
</div>
Ответ 3
Выше всего легко использовать директиву ng-click
и иметь эту функцию внутри области контроллера, только вам нужно назначить ссылку на функцию java-script на переменную области управления. Не нужно снова переписывать функцию в вашем поле. Передача ссылки на функцию сделает трюк.
Разметка
<div ng-click="deleteArrival(filterList.id)" class="table-icon deleteIcon">
{{filterList.id}}
</div>
контроллер
//assign javascript method reference in controller
$scope.deleteArrival = deleteArrival;
Ответ 4
Вам не разрешено создавать привязку для атрибутов обработчика событий, таких как onclick, onload, onsubmit и т.д. в angularjs, потому что,
нет никакой практической ценности в привязке к этим атрибутам, и поэтому он предоставляет только ваше приложение для уязвимостей безопасности, таких как XSS. По этим причинам привязка к атрибутам обработчика событий (все атрибуты, начинающиеся с атрибута on и formaction) не поддерживается в angularjs.
В вашем случае
Внутри ng-repeat
используйте ng-click
для отправки значений в вашу функцию и объявите эту функцию в контроллере.
См. здесь документацию по ng-click
Надеюсь, это поможет!
Ответ 5
попробуйте это без фигурных скобок
deleteArrival (filterList.id)
Ответ 6
Я не буду упускать из виду ваши причины не использовать ng-click, поскольку другие участники указали, что вы действительно "должны". Однако, если вы действительно хотите/нуждаетесь в этом, предложите мое предложение с помощью 'this' и атрибутов данных.
<div data-filterListId="{{filterList.id}}" onclick="deleteArrival(this)" class="table-icon deleteIcon">{{filterList.id}}</div>
function deleteArrival(arrivalElem) {
alert('myId=' + arrivalElem.getAttribute("data-filterListId"));
}
Ответ 7
У меня был случай, когда я не мог использовать ng-click из-за привязки окна. Не получил прямого ответа, но нижеследующее работало для меня. Я знаю, что это нехорошее решение, но оно работает в моем случае.
angular.element(это).scope(). CtrlName.variable
Вы можете попробовать использовать свою собственную структуру классов. Таким образом, клик будет выглядеть следующим образом:
OnClick = "тест (angular.element(это).scope(). CtrlName.ObjName.variable)"
Ответ 8
Если вы все еще хотите использовать onclick, это работа для меня, я надеюсь, что это сработает и для вас.
<div id="{{filterList.id}}" onclick="deleteArrival(this.id)" class="table-icon deleteIcon">{{filterList.id}}</div>