Как вызвать метод?
Здравствуйте. Помочите пожалуйста разобраться в том, как вызвать метод, который привязан к событию нажатия кнопки. Вроде звучит просто, но я не знаю как. С JS пришлось столкнуться только сейчас.
Есть дашборд (http://play.grafana.org/#/dashboard/...fana-play-home), на странице есть кнопка "Zoom out". Я хочу вызвать этот метод в другом месте, но увы не знаю как. Вот это место на странице: <a class="small" ng-click="zoom(2)">Zoom Out</a> Если в консоль ввести "zoom(2)", то получаю ошибку "ReferenceError: zoom is not defined". Как достучаться до этого метода? |
Цитата:
если там метод, то надо брать экзампляр класса: var obj = { fn: function (a) { console.log(a) } }; obj.fn(2); |
Ну с ООП мне все ясно, вот только вопрос остается открытым. Я не знаю как найти какому классу принадлежит "zoom()". Средства отладки да и сам JS отличается от других языков программирования, поэтому пока "затык". Сижу читаю учебник на сайте.
|
:help:
|
ibolgenos,
Вообще вам надо читать документацию дашборда с которым вы работаете, там наверняка это есть. Неохота мне туда лезть и смотреть как это делать, но если приперло можно симулировать клик по кнопке зума (костыль). Просто document.querySelector("selector").click() Цитата:
Можете скинуть ссылку на свою страницу? |
Страница все так же - http://play.grafana.org/#/dashboard/...fana-play-home , кнопка ZOOM в самом верху.
Почитаю про document.querySelector("selector").click() , я так понимаю мне нужно ссылки ID какой нибудь присвоить и вписать вместо "selector"? |
ibolgenos,
аааб это же ангулар! :) я "ng" не заметил. Функция должна лежать где-то в контроллере DashboardCtrl Чтобы эмулировать клик надо написать $(".navbar .grafana-menu-zoom-out .small").click(); |
tsigel, мне бы хотелось понять как вызвать метод который вызывается при клике. Клик у меня вышло кстати сделать и так как вы предложили выше, когда вместо selector написал класс кнопки :)
Не знаете как достучаться до метода zoom()? Мне бы хотелось понять принцип. |
ibolgenos,
Принцип прост. Ангулар создает объект $scope для каждого контроллера (в данном случае "DashboardCtrl"), и привязывает этот объект к конкретной верстке (это тот элемент в котором написано "ng-controller='DashboardCtrl'"). Дальше если очень грубо (и не совсем так, но сама идея), то он при клике смотрит есть ли ng-click, если есть - то ищет $scope к которому он привязан, потом вызывает метод (или проигрывает выражение, не знаю как ещё называть) в контексте этого $scope. То есть в данном случае происходит вызов $scope.zoom(2). Чтобы вам делать вызовы этих методов - надо получить доступ к $scope этого элемента. |
Не смог еще разобраться как это сделать, а вы знаете как это сделать? Или это требует детального изучения исходников?
|
Часовой пояс GMT +3, время: 05:51. |