Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更新角度范围_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 如何更新角度范围

Javascript 如何更新角度范围,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我想在控制器中对从服务器获取的数据进行一些更改。我举了一个例子来解释我的问题。递归方法update似乎不会更新$scope.gdevPiechartArchiveVolume的值。有人能告诉我为什么吗?有没有办法触发更新?谢谢大家! angular.module('socketTestApp') .controller('MainCtrl', function($scope, Socket) { Socket.on('gdevAreachart_archiveVolum

我想在控制器中对从服务器获取的数据进行一些更改。我举了一个例子来解释我的问题。递归方法update似乎不会更新$scope.gdevPiechartArchiveVolume的值。有人能告诉我为什么吗?有没有办法触发更新?谢谢大家!

angular.module('socketTestApp')
    .controller('MainCtrl', function($scope, Socket) {

        Socket.on('gdevAreachart_archiveVolume_update', function(data_) {
            selectArchiveData(data_);
        });
        function selectArchiveData(data) {

            var i = 0;
            var selectedData;


            $scope.update = function() {
                _.delay($scope.update, 2000);

                if ($scope.pause)
                    return

                i++
                $scope.gdevPiechartArchiveVolume = i;   //<--- this seems not to work but only if i set $scope.pause true
                console.log('Updates in $scope.update: ' + $scope.gdevPiechartArchiveVolume);
            }


            $scope.update();

        }
控制台输出指令:。。。应像$scope中的更新一样每次打印。更新::


您是否尝试过使用$scope.$apply?
每当您想从angular不关心的函数更新angular$scope时,您都需要这样做,在您的示例Socket中。当$scope.pause=true时,如果$scope.pause return将返回且$scope.gdevPiechartArchiveVolume=i;不会执行。很高兴我能帮忙,别忘了将答案标记为正确答案:
angular.module('socketTestApp')
    .directive('gdevAreachart', function() {
        var linker = function(scope, element, attr) {

            scope.$watch('data', function(newVals, oldVals) {
                console.log("Direktive: " + newVals);
                return //make some other thinks
            }, true);
Direktive: undefined gdevAreachart.js:14
Updates in $scope.update: 1 main.js:127
Direktive: 1 gdevAreachart.js:14          <---- set scope.pause = true ... false to continue
Updates in $scope.update: 2 main.js:127
Updates in $scope.update: 3 main.js:127
Updates in $scope.update: 4 main.js:127
Updates in $scope.update: 5 main.js:127
Updates in $scope.update: 6 main.js:127
Direktive: 6 gdevAreachart.js:14          <---- set scope.pause = true ... false to continue
Updates in $scope.update: 7 main.js:127
Updates in $scope.update: 8 main.js:127
Direktive: 8 gdevAreachart.js:14          <---- set scope.pause = true ... false to continue
Updates in $scope.update: 9 main.js:127
Updates in $scope.update: 10 main.js:127
Direktive: 10 gdevAreachart.js:14          <---- set scope.pause = true ... false to continue
Updates in $scope.update: 11 main.js:127
Updates in $scope.update: 12 
function selectArchiveData(data) {

            var i = 0;
            var selectedData;


            $scope.update = function() {


                if ($scope.pause)
                    return

                i++
                $scope.gdevPiechartArchiveVolume = i;
                console.log('Updates in $scope.update: ' + $scope.gdevPiechartArchiveVolume);
                setTimeout(function() {
                   $scope.$apply($scope.update());
                }, 2000);
            }
            $scope.update();

        }