【问题标题】:Unable to inject $location service无法注入 $location 服务
【发布时间】:2014-07-01 17:21:02
【问题描述】:

这个代码给了我Error: [$injector:unpr] Unknown provider: $scope, $locationProvider <- $scope, $location

var app = angular.module('myApp.controllers', []);

app.controller('Signup', ['$scope, $location', function($scope, $location) {
    $scope.checkEmailValid = function(){
        //TODO make a decision about whether to go somewhere, if true do this:
        $location.path('/view2');
    };
}]);

我是否遗漏了有关如何注入位置服务的信息? 我没有配置 $locationProvider,但这样做似乎没有帮助。

【问题讨论】:

  • Plunkr 或 JSFiddle?
  • @Mik378 哎呀,让我明白这一点......
  • 你只是缺少一个报价:app.controller('Signup', ['$scope', '$location', function($scope, $location)
  • @Sebastian 非常感谢,这让我发疯了!
  • @KnewB 该变量可能会意外返回到另一个上下文并导致潜在的错误突变。当你不使用变量时,你有一个完全孤立的代码和 0 风险。而且它也更干净,因为更少的词:不是多余的。

标签: angularjs angularjs-service


【解决方案1】:

您忘记了 $scope 和 $location 周围的引号:

var app = angular.module('myApp.controllers', []);

app.controller('Signup', ['$scope', '$location', function($scope, $location) {
    $scope.checkEmailValid = function(){
        //TODO make a decision about whether to go somewhere, if true do this:
        $location.path('/view2');
    };
}]);

这应该是诀窍!

【讨论】:

    【解决方案2】:

    尝试更简单的形式(没有数组形式 - 可能缺少引号是你的问题):

    app.controller('Signup', function($scope, $location) {
        $scope.checkEmailValid = function(){
            //TODO make a decision about whether to go somewhere, if true do this:
            $location.path('/view2');
        };
    });
    

    使用 ngMin 可以在构建时解决缩小问题,这种形式不易出错且更具可读性

    【讨论】:

      猜你喜欢
      • 2016-10-23
      • 2017-06-27
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 2019-05-22
      • 1970-01-01
      相关资源
      最近更新 更多