AngularJS - $index, $event, $log

本文介绍如何在AngularJS中利用$event获取点击事件的位置信息,并通过$log记录这些信息。文章展示了如何设置ng-repeat和ng-click指令来显示字符索引及鼠标点击位置,同时提供了在不设置控制器的情况下使用$log的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文: https://thinkster.io/egghead/index-event-log

--------------------------------------------------------------

$index is a way to show which iteration of a loop you’re in. If we set up an ng-repeat to repeat over the letters in ‘somewords’, like so:

<div ng-app="app">
  <div ng-repeat="item in 'somewords'.split('')"> {{$index + 1}}. {{item}} </div> </div> 

We can see that we get a listing of all the characters in ‘somewords’ with the index next to it.

Now, let’s add an ng-click attribute to the div as “ev = $event” and a binding to ev.pageX. Let’s also set this div’s class to “button” since we’re going to be clicking on it

<div ng-app="app">
  <div
    class="button" ng-repeat="item in 'somewords'.split('')" ng-click="ev = $event" > {{$index + 1}}. {{item}} {{ev.pageX}} </div> </div> 

Now we can click on all of these buttons and whenever we click we get the extra number next to our index and character. This is the x value of where we’re clicking, and this shows that we can access the event that’s happening through $event.

If we want to log this event, we can do so by using $log. In order to use $log without setting up a controller, we can put it on the root scope of our application. We need to set up the run phase of our application and inject $rootScope and $log in order to expose $log to $rootScope

var app = angular.module("app", []); app.run(function($rootScope, $log){  $rootScope.$log = $log; }); 

Now we’re able to access the $log function anywhere within our app. (Note that you rarely want to put anything on the $rootScope as anything on the $rootScope will be available throughout the app.) Let’s change the ng-click attribute to “$log.debug($event)”

<div ng-app="app">
  <div
    class="button" ng-repeat="item in 'somewords'.split('')" ng-click="$log.debug($event)" > {{$index + 1}}. {{item}} {{ev.pageX}} </div> </div> 

Now we can open up our console and click on any of the buttons and we’ll see that the MouseEvent is being logged to the console. You can turn off the debug level of the logger in the config phase of the app by using $logProvider and calling debugEnabled and passing it false.

var app = angular.module("app", []); app.config(function($logProvider){  $logProvider.debugEnabled(false); }); app.run(function($rootScope, $log){  $rootScope.$log = $log; }); 

Be sure to use proper logging levels in order for debugEnabled to work, as any info or warnings will still be logged

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值