@viktorulyushev

Как навесить событие на кнопку?

Есть форма с кнопкой,вот код инпута
<input type="submit" class="btn btn-middle btn-action" value="Отправить" data-ng-click="callback.send()" data-ng-disabled="modalCallbackForm.$invalid" />'

мне нужно повесть обработчик события для этой кнопки для яндекс метрики и roistatGoal добавляю код
<input type="submit" class="btn btn-middle btn-action" value="Отправить" onclick="yaCounter40080335.reachGoal('Buy');roistatGoal.reach({name: name, phone: phone, email: email, text: "Заказ из корзины"});return true;"  data-ng-click="callback.send()" data-ng-disabled="modalCallbackForm.$invalid" />'

и перестает работать,в чем проблема?может из за data-ng-click?и правильно ли навесил события?
причем инпут формируется в какой то непонятно ангуляровской функции
; (function (ng) {
    'use strict';

    var callbackService = function ($http, modalService) {
        var service = this;

        service.send = function (name, phone, comment) {

            return $http.post('callback/addcallback', { name: name, phone: phone, comment: comment, rnd: Math.random() }).then(function (response) {
                return response.data;
            });
        };

        service.getParams = function () {

            return $http.get('callback/getparams').then(function (response) {
                return response.data;
            });
        };

        service.dialogRender = function (title, parentScope) {

            var options = {
                'modalClass': 'callback-dialog',
                'isOpen': true
            };

            modalService.renderModal(
                'modalCallback',
                title,
                '<div data-ng-include="\'/modules/callback/scripts/templates/modal.html\'"></div>',
                '<input type="submit" class="btn btn-middle btn-action" value="Отправить" data-ng-click="callback.send()" data-ng-disabled="modalCallbackForm.$invalid" />',
                options,
                { callback: parentScope });
        };

        service.dialogOpen = function () {
            modalService.open('modalCallback');
        };

        service.dialogClose = function () {
            modalService.close('modalCallback');
        };

        service.setVisibleFooter = function (visible) {
            modalService.setVisibleFooter('modalCallback', visible);
        };
    };

    ng.module('callback')
      .service('callbackService', callbackService);

    callbackService.$inject = ['$http', 'modalService'];

})(window.angular);
  • Вопрос задан
  • 791 просмотр
Пригласить эксперта
Ответы на вопрос 2
@kodwi
https://moikrug.ru/kodwi
Конечно работать не будет.

Код из обычного onclick перенеси в контроллер, т.е. оберни в функцию, например в тот же callback.send(). Откуда js код в разметке узнает про name, phone, email и т.д., если ты используешь ангуляр и при этом не интерполируешь код?
Ответ написан
DarthJS
@DarthJS
Посмотри на этот пример
Тебе нужно создать контроллер, как написал выше kodwi. И в этот контроллер инджектишь свой callbackService, далее обворачиваешь функции сервиса и выводишь их в хтмл. Из примера по ссылке, в функции archive ты вызываешься какую-то из своих функций callbackService.send()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы