在Angularjs中的$ location上的Url重定向问题 - 无法读取未定义

时间:2016-08-28 11:26:16

标签: javascript angularjs

我是AngularJS的新手,我正在尝试运行这个AngularJS,它应该修改URL而不重新加载页面,当我点击我的提交按钮但是在控制台中我得到TypeError:无法读取undefined的属性'path'。

无法真正看到我错过$ location注入的位置。 可能是什么问题呢?

var app = angular.module("SearchAPP", ['ngRoute']);

app.run(['$route', '$rootScope', '$location',
  function($route, $rootScope, $location) {
    var original = $location.path;
    $location.path = function(path, reload) {
      if (reload === false) {
        var lastRoute = $route.current;
        var un = $rootScope.$on('$locationChangeSuccess', function() {
          $route.current = lastRoute;
          un();
        });
      }
      return original.apply($location, [path]);
    };
  }
]);

app.controller('GetController', ['$http', '$scope', '$location',
  function($http, $scope, $rootScope, $location) {

    $scope.click = function() {

      var response = $http({
        url: 'http://localhost:4567/search',
        method: "GET",
        params: {
          keyword: $scope.searchKeyword
        }
      });

      response.success(function(data, status, headers, config) {
        $scope.searchResults1 = data;
        // $http.defaults.useXDomain = true;
        $location.path('/' + $scope.searchKeyword, false);
      });

      response.error(function(data, status, headers, config) {
        alert("Error.");
      });
    };
  }
]);

1 个答案:

答案 0 :(得分:1)

DI阵列中的依赖序列错误,DI阵列第3个参数中缺少$rootScope。确保注入的依赖项应该在控制器函数中以相同的顺序使用

//                                                  VVVVVVVV $rootscope was missing
app.controller('GetController', ['$http', '$scope', '$rootScope','$location',
  function($http, $scope, $rootScope, $location) {