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
Angularjs 试图使用$scope.$apply(),但它抛出一个错误"$范围。$apply不是一个函数;_Angularjs_Apply_Angularjs Service - Fatal编程技术网

Angularjs 试图使用$scope.$apply(),但它抛出一个错误"$范围。$apply不是一个函数;

Angularjs 试图使用$scope.$apply(),但它抛出一个错误"$范围。$apply不是一个函数;,angularjs,apply,angularjs-service,Angularjs,Apply,Angularjs Service,试图调用$scope.$apply,但抛出一个错误,提示: $scope.$apply不是一个函数 代码如下: function loadUnitChanged(event, data) { console.log('Event Info: ', event); setTimeout(function () { $scope.$apply(function () { $scope.ca

试图调用
$scope.$apply
,但抛出一个错误,提示:

$scope.$apply不是一个函数

代码如下:

function loadUnitChanged(event, data) {
        console.log('Event Info: ', event);
            setTimeout(function () {
                $scope.$apply(function () {
                    $scope.cargoregisters = createArrayFromLoadUnit(data);
                });
            }, 2000);           
    }
=========================================================

 angular.module('portwin.cargo').controller('CargoController', function     ($rootScope, $location, $timeout, $mdDialog, cargoGateway) {
    var $scope = this;

    // Event handlers
    $rootScope.$on('cargodetails:loaded', cargoDetailBaseDataLoaded);
   $rootScope.$on('cargoRegistration:loaded',      cargoRegistrationBaseDataLoaded);
    $rootScope.$on('loadUnit:changed', loadUnitChanged);
    $rootScope.$on('loadUnit:Saved', updateLoadUnitAfterSave);
编辑: 既然你有权访问$scope,根据你的评论,我就这么做

function loadUnitChanged(event, data) {
  console.log('Event Info: ', event);
  setTimeout(function () {
    $scope.cargoregisters = createArrayFromLoadUnit(data);
    ...any other processing you want to do in this function...      
  }, 2000);           
}

请显示所有代码上下文。我们不知道您在何处调用此函数,或者在何处声明此函数,或者
$scope
是否正确注入了
$scope
?如果在全局命名空间中声明此函数,则会出现问题$scope.cargoregisters=createArrayFromLoadUnit(数据);如果没有$applyHello,这可以正常工作,谢谢你的回答,但是我的$scope没有$apply也可以正常工作,所以这意味着$scope被正确注入。此外,在“$scope.cargoregisters=createArrayFromLoadUnit(data);”语句中绑定的不仅仅是一个字段。这里有很多字段被绑定,你为什么要使用私有方法而不是作用域函数?ie:$scope.loadUnitChanged()vs function loadUnitChanged这可能会导致在未正确注入控制器作用域的情况下尝试与控制器作用域交互时出现各种错误行为。如果查看上面的控制器代码,“loadUnitChanged”函数将作为广播此事件的另一个控制器中的事件的结果被激发,这就是为什么使用私有函数,即$rootScope.$on('loadUnit:changed',loadUnitChanged);既然你说你有权访问$scope,我不明白你需要什么。我试图解决这个问题,但您的问题是关于$scope。$apply()抛出了一个错误…我的意思是,下面的代码工作正常,我正在尝试实现$apply函数,您能告诉我如何执行此操作://setTimeout(function()){//$scope.$apply(函数(){$scope.cargoregisters=createArrayFromLoadUnit(数据);//});//},2000);