Javascript 角度ng点击功能不';不要总是开火

Javascript 角度ng点击功能不';不要总是开火,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个角度ng点击功能,它并不总是开火 网址如下: 功能如下所示: $scope.clickLike = function() { $('.icon-like').on('click', function(){ $(this).toggleClass('happy'); }); }; 我在HTML中这样调用它: <div class="icon-like" ng-click="clickLike()"</div> 在$sc

我有一个角度ng点击功能,它并不总是开火

网址如下:

功能如下所示:

$scope.clickLike = function() {
      $('.icon-like').on('click', function(){
        $(this).toggleClass('happy');
      });
    }; 
我在HTML中这样调用它:

<div class="icon-like" ng-click="clickLike()"</div>

$scope中不需要onclick方法。单击like

<div class="icon-like" ng-click="clickLike($event)"</div>

$scope.clickLike = function(e) {
  e.currentTarget.toggleClass('happy');
});

$scope中不需要onclick方法。单击like

<div class="icon-like" ng-click="clickLike($event)"</div>

$scope.clickLike = function(e) {
  e.currentTarget.toggleClass('happy');
});

您需要在单击事件中传递
$event
并捕获
$event
。然后可以使用
$event.target
访问元素

示例代码段:

angular.module(“myApp”,[])
.controller(“myController”,函数($scope){
$scope.clickLike=函数($event){
元素($event.target).toggleClass(“hello”)
}
})
。你好{
颜色:红色;
}


您好
您需要在单击事件中传递
$event
并捕获
$event
。然后可以使用
$event.target
访问元素

示例代码段:

angular.module(“myApp”,[])
.controller(“myController”,函数($scope){
$scope.clickLike=函数($event){
元素($event.target).toggleClass(“hello”)
}
})
。你好{
颜色:红色;
}


您好
所以您需要使用指令来操作您的DOM。。。从控制器操作DOM不是最佳实践。看看这个例子,我创建了一个用作属性的指令(就像ng click),并将一个类应用于该指令作为属性的元素

从角度来看:

使用控制器:

  • 设置$scope对象的初始状态
  • 将行为添加到$scope对象
不要使用控制器:

  • 操纵DOM-控制器应仅包含业务逻辑。将任何表示逻辑放入控制器会显著影响 它的可测试性。Angular在大多数情况下都有数据绑定,并有封装手动DOM操作的指令
  • 格式化输入-改用角度窗体控件
  • 过滤器输出-使用角度过滤器代替。跨控制器共享代码或状态-改用angular services
  • 管理其他组件的生命周期(例如,创建服务实例)
让我知道这是否有帮助:

在html中,您可以在任何元素中使用此指令,但不能与控制器紧密耦合


因此您需要使用指令来操作DOM。。。从控制器操作DOM不是最佳实践。看看这个例子,我创建了一个用作属性的指令(就像ng click),并将一个类应用于该指令作为属性的元素

从角度来看:

使用控制器:

  • 设置$scope对象的初始状态
  • 将行为添加到$scope对象
不要使用控制器:

  • 操纵DOM-控制器应仅包含业务逻辑。将任何表示逻辑放入控制器会显著影响 它的可测试性。Angular在大多数情况下都有数据绑定,并有封装手动DOM操作的指令
  • 格式化输入-改用角度窗体控件
  • 过滤器输出-使用角度过滤器代替。跨控制器共享代码或状态-改用angular services
  • 管理其他组件的生命周期(例如,创建服务实例)
让我知道这是否有帮助:

在html中,您可以在任何元素中使用此指令,但不能与控制器紧密耦合


我们不需要在ng click函数中传递
$event
并在scope函数中捕获吗?@A.J抱歉,我忘了那个。但是,嘿,谢谢你指出:)谢谢@A.J。不过,仅仅使用currentTarget.toggleClass()是不起作用的<代码>当前目标
未定义。对不起,我还在学习。想法?@lz430代替currentTarget,你需要使用
$event.target
谢谢@A.J.现在我得到了
e.currentTarget.toggleClass不是一个函数
我做错了什么吗。我准确地复制了你的代码。我们不需要在ng click函数中传递
$event
并在scope函数中捕获吗?@A.J抱歉,我忘了那个。但是,嘿,谢谢你指出:)谢谢@A.J。不过,仅仅使用currentTarget.toggleClass()是不起作用的<代码>当前目标
未定义。对不起,我还在学习。想法?@lz430代替currentTarget,你需要使用
$event.target
谢谢@A.J.现在我得到了
e.currentTarget.toggleClass不是一个函数
我做错了什么吗。我完全复制了你的代码