AngularJS Scope Apply不适用于click

时间:2014-10-24 08:16:11

标签: javascript angularjs scope

我正在尝试使用以下代码在点击事件之后查看范围变量值:

$('#teamDetailTabs a').click(function(data) {
                $scope.$apply(function(){
                    console.log($(this).attr('data-target'));
                    $scope.activeTab = $(this).attr('data-target');
                    console.log($scope.activeTab);
                });
});

问题是,即使我使用$ scope.apply,值$ scope.activeTab也是未定义的。

我该如何解决?

感谢您的任何建议。

1 个答案:

答案 0 :(得分:4)

this调用中的上下文(apply)不是您所期望的,它不再是a DOMElement。所以你可以像这样解决它:

var self = this;
$scope.$apply(function() {
    console.log($(self).attr('data-target'));
    $scope.activeTab = $(self).attr('data-target');
    console.log($scope.activeTab);
});

然而,我强烈建议您使用ngClick并且永远不要在Angular应用中使用jQuery样式方法。看看这个detailed thread