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

240
12 апреля 2017, 15:02

Есть форма с кнопкой,вот код инпута

<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);

Answer 1

Попробуйте вынести все обращения из onclick в обработчик data-ng-click, прямо в контроллере. И все отправки метрики желательно оборачивать в try-catch, чтобы сбор статистики при падении не повлиял на общую работу системы.

READ ALSO
Задача из книги Выразительный Javascript

Задача из книги Выразительный Javascript

Всем приветСейчас осваиваю Javascript через книгу "Выразительный javascript"

318
Statement, Expression, ExpressionStatements. Отличие и корректный перевод

Statement, Expression, ExpressionStatements. Отличие и корректный перевод

Столкнулся с понятиями Statement, Expression, ExpressionStatements в книге Douglas CrockfordJavaScript: The Good Parts

234
Как убрать ошибку JS в PHPMyAdmin?

Как убрать ошибку JS в PHPMyAdmin?

Установил новую версию PHPMyAdminВ целом все OK, но в консоли вылезает ошибка JS:

244