当我使用angularjs在元素中使用ng-click时,$ watch不会触发

时间:2018-08-03 06:21:02

标签: javascript angularjs

我已经使用$ watch作为范围变量"active"来监视更改。在子元素中也使用ng-click="toggleTab()"。现在,当我单击该子元素时,我尝试观察范围的变化。但它在本地工作。但一生都无法工作。 ng-click仅有效。代码在下面

<uib-tabset type="tabs" active="active">
  <uib-tab index="0" heading="Advertisers" ng-click="toggleTab($event, 'advertisers', '0');">

控制器:

$scope.$watch('active', function(next, prev) {
  $scope.submitted = false;
  angular.element('#advertisers .tags .input').val('');
  nextTabIndex = next;
  prevTab = prev;
});
$scope.toggleTab = function() {});

1 个答案:

答案 0 :(得分:0)

在此代码中,哪里表明您更改了active? 毕竟,这是一个变量。

您还遇到toggleTab函数的问题。您发送了3个参数,但指定的功能不使用任何参数。

active可能是数组或对象(在这种情况下,您将active condition写入错误,因为数组基本上是JS中的对象,而对象始终是真实的。此外,在这种情况下,您需要深入观察通过在回调函数之后添加一个额外的(第3个参数,其值为true,例如:

$scope.$watch('active', callback, true);

目前,您的代码并未按照您希望的那样工作。也很难确切地了解您想要的内容,但是如果您只是想看看实际的$watch(),请更改active的值。您只需声明ng-click="active=active+1"。我认为这是您从代码中看到它的最简单方法。

因此,所有内容都保持不变,但是您拥有了HTML元素:

<uib-tab index="0" heading="Advertisers" ng-click="active=active+1">