gpt4 book ai didi

javascript - AngularJS:$scope.watch 不工作

转载 作者:行者123 更新时间:2023-11-28 18:47:12 24 4
gpt4 key购买 nike

我有一个元素a,它存储选中的复选框的数量。它已在我的部分更新。我可以访问 Controller 中的元素,但是,我需要将其设置为全局,因为我的大多数 Controller 都会使用它。我使用了 $rootScope 变量,并尝试在每次使用 $scope.watch 更新时将其设置为 a 的值,但是,这不起作用。

部分:

<p>You have selected: {{ a =(categories | filter:{checked: true }).length }} JOSCOS</p>

<ul class="a">
<li ng-repeat="item in categories" >
<input type="checkbox" class="chk" ng-model = "item.checked">{{item.info.ct}}
</input>
</li>
</ul>
<a href = "#x1" ng-click = "al()">Start the test</a>

我的 Angular Controller :

myApp.controller('OneController', ['$scope', '$http', function($scope, $http) {
$http.get('js/data/JOSCO.json').success(function(data) {
$scope.categories = data;
});
$scope.a = 0
$rootScope.cat = $scope.a;
$scope.$watch('$scope.a',function () {
$rootScope.cat = $scope.a;
});
$scope.al = function(){
alert($scope.a); //outputs properly
};
}]);

第二个 Controller (我对此有不同的部分):

myApp.controller('DetailsController', ['$scope','$rootScope' ,function($scope, $rootScope) {

$scope.catno = $rootScope.cat;
alert($scope.catno); //outputs as '0'
}]);

最佳答案

$scope.$watch 接受多种不同的方式来指定您将监视的变量。您可以指定一个函数:

$scope.$watch(function(){return $scope.myvar}, someWatchHandler)

或者直接发送变量:

$scope.$watch($scope.myvar, someWatchHandler)

或将变量作为字符串传递:

$scope.$watch('myvar', someWatchHandler)

您正在使用其中的最后一个。请注意,您不需要在其前面添加 $scope —— 如果您这样做,它将找不到该变量。只需从 $scope.a 中删除 $scope 就可以了。

关于javascript - AngularJS:$scope.watch 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com