欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

angularjs怎么传递 this dom 对象? 有大用 有大大用


2 回答

?
哆啦的时光机

可以通过指令传入参数$event,然后函数接受ev,当你点击节点的时候,通过获取事件源对象(ev.target)来当做this。具体代码如下:

<body ng-controller="MyCtrl">
<div class="div1" ng-click="clickFn($event)">

<span>bbbb</span>

</div>

<script src="js/angular.min.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp',[]);
myApp.controller('MyCtrl',['$scope','$rootScope',function($scope,$rootScope){
$scope.clickFn = function(ev){
//console.log(ev.target);

//最好使用下面 closet 方法 ,获取祖先元素 closest() 方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上。(因为可能ev.target 指的是 div1 里面的 span元素)

console.log($(ev.target).closest('.div1'));

};
}]);
</script>
</body>

 反对 回复2019-03-01
    ?
    呼唤远方

    js中传的作用域有三种方法。

    1. call。function.call(context,arg1,arg2,arg3,...)。function为执行函数,context为此函数的上下文即你这里需要传入的this。arg1,arg2,arg3...是执行此函数需要的参数。

    2. apply。function.apply(context,[arg1,arg2,arg3,...])和call类似,唯一区别为只支持两个参数,第二个参数为执行此函数需要的参数数组。

    3. bind。function.bind(context,arg1,arg2,arg3,...)。此函数和call类似,唯一区别为该函数不会立刻执行,而call和apply是立刻执行的。


     反对


    来自 http://www.imooc.com/wenda/detail/506381


    angular ng-click获取触发事件对象this

    来源:http://hbiao68.iteye.com/blog/2286434



    ng-click="shareGoods({{item.goods_id}},$event)" 传递一个$event对象

    通过事件对象 $event.target  获取事件源

     

    Html代码  收藏代码
    1. <div class="float_left width_50 border_b_top_eee border_b_right_eee bg_ff padding_left_15 padding_right_15 padding_top_10 line_height_15" ng-click="addPackage($event,111)">  

    2.     <div class="color_e5005a font_16">洗衣机套餐1</div>  

    3.     <div class="color_99">  

    4.         洗衣机1台+冰箱1台  

    5.     </div>  

    6.     <div class="line_height_40px color_e5005a">  

    7.         ¥238  

    8.     </div>  

    9. </div>  

     

     

    Js代码  收藏代码
    1. //动态添加数据  

    2. $scope.addPackage = function(myevent,deviceType){  

    3.     //获取item对象  

    4.     var htmlObj = $(myevent.target).closest(".float_left");  

    5.     var deviceName = htmlObj.find("div.font_16").html();  

    6.     var jsonObj = {  

    7.         "deviceType":deviceType,//设备类型,唯一标识,用于判断是否已经添加  

    8.         "deviceName":deviceName //设备的名称  

    9.     };  

    10.     //判断数据是否已经选中了  

    11.     if(!this.hasDevice(deviceType)){  

    12.         //给$scope.lists添加数据  

    13.         this.lists.push(jsonObj);  

    14.     }  

    15. };  




    angularjs怎么传递this对象

     我来答  举报浏览 2752 次
    热心网友 
    2017-08-02
    可以通过指令传入参数$event,然后函数接受ev,当你点击节点的时候,通过获取事件源对象(ev.target)来当做this。具体代码如下:

    <body ng-controller="MyCtrl">
    <div class="div1" ng-click="clickFn($event)"></div>

    <script src="js/angular.min.js"></script>
    <script type="text/javascript">
    var myApp = angular.module('myApp',[]);
    myApp.controller('MyCtrl',['$scope','$rootScope',function($scope,$rootScope){
    $scope.clickFn = function(ev){
    console.log(ev.target);
    };
    }]);
    </script>
    </body>
    huangui19 
    来自电脑网络类芝麻团 2016-09-04
    angularjs中的this与$scope的作用基本一样。

    所以,并不能像在jq或者js中那样传递。
    得想其它办法。

    如果是循环,如果考虑把$index传递到控制器中去,模版中每个循环加个变量:"test{{$index}}",然后控制器中通过控制test+$index这个变量的值来达到控制对应dom元素的目的。
     抢首赞   6
     评论  举报
    zhou2003737 
    2017-01-19

    js中传的作用域有三种方法。

    1. call。function.call(context,arg1,arg2,arg3,...)。function为执行函数,context为此函数的上下文即你这里需要传入的this。arg1,arg2,arg3...是执行此函数需要的参数。

    2. apply。function.apply(context,[arg1,arg2,arg3,...])和call类似,唯一区别为只支持两个参数,第二个参数为执行此函数需要的参数数组。

    3. bind。function.bind(context,arg1,arg2,arg3,...)。此函数和call类似,唯一区别为该函数不会立刻执行,而call和apply是立刻执行的。

     1   7
     评论  举报
    匿名用户 
    2016-04-09
    你这个是作用域的问题吧,interval里面的this是window,不是controller下面的那个this.num,你这样执行后一个是interval域里没有个num,切永远会等于 NaN
     本回答被提问者和网友采纳
     抢首赞   6
     评论  举报
    封子雨 
    2016-04-19
    angular也是javascript啊 像javascript一样传递就好

    来自  https://zhidao.baidu.com/question/875373273355865732.html

    普通分类: