服务AngularJs中未定义$ scope:

时间:2016-02-19 11:16:37

标签: javascript angularjs

  当我用于响应消息时,

得到了未定义范围的错误:

$scope.responsemessage = response;
  

然后我在这里添加了$ scope:

app.service('fileUpload', ['$http', '$scope', function ($http, $scope) {
  

当我在上面添加$ scope时出现此错误错误:[$ injector:unpr]   http://errors.angularjs.org/1.4.8/ $注射器/ unpr?P0 = .................

4 个答案:

答案 0 :(得分:1)

服务没有范围。

如果你想在服务范围内使用范围,必须从控制器传递它。

喜欢这个

在控制器中

fileUpload.checkFile($scope.responsemessage);

在服务中

function checkFile(respMsg)
{
   console.log(respMsg);
}

答案 1 :(得分:1)

$scope不能从服务中获得,它只应在控制器内部使用。

答案 2 :(得分:1)

在角度$scope中可用控制器,服务用作数据提供者的依赖项。

您无法在服务中使用$scope,您可以从服务中返回承诺对象,如:

app.service('fileUpload', ['$http', function($http) {
    return $http.post('url')
}]);

现在您可以注入此服务来更新控制器$scope上的变量:

app.controller('cntrl', ['$scope', 'fileUpload',  function($scope, fileUpload){
      $scope.responsemessage = fileUpload.then(function(data){
          return data;
      })
}]);

答案 3 :(得分:0)

您不能在服务和工厂中使用$ scope。 您可以通过将$ scope值作为参数来调用服务,并将返回值保存到$ scope变量