Javascript TypeError:无法读取属性';邮政';未定义的

Javascript TypeError:无法读取属性';邮政';未定义的,javascript,angularjs,Javascript,Angularjs,我得到以下错误: TypeError: Cannot read property 'post' of undefined at postName (http://127.0.0.1:9000/scripts/controllers/main.js:28:12) at Scope.$scope.submit (http://127.0.0.1:9000/scripts/controllers/main.js:10:7) at http://127.0.0.1:9000/bo

我得到以下错误:

TypeError: Cannot read property 'post' of undefined
    at postName (http://127.0.0.1:9000/scripts/controllers/main.js:28:12)
    at Scope.$scope.submit (http://127.0.0.1:9000/scripts/controllers/main.js:10:7)
    at http://127.0.0.1:9000/bower_components/angular/angular.js:10348:21
    at http://127.0.0.1:9000/bower_components/angular/angular.js:18333:17
    at Scope.$eval (http://127.0.0.1:9000/bower_components/angular/angular.js:12175:28)
    at Scope.$apply (http://127.0.0.1:9000/bower_components/angular/angular.js:12273:23)
    at Scope.$delegate.__proto__.$apply (<anonymous>:855:30)
    at HTMLFormElement.<anonymous> (http://127.0.0.1:9000/bower_components/angular/angular.js:18332:21)
    at HTMLFormElement.jQuery.event.dispatch (http://127.0.0.1:9000/bower_components/jquery/dist/jquery.js:4641:9)
    at HTMLFormElement.elemData.handle (http://127.0.0.1:9000/bower_components/jquery/dist/jquery.js:4309:46) angular.js:9563(anonymous function) angular.js:9563(anonymous function) angular.js:7004Scope.$apply angular.js:12275$delegate.__proto__.$apply VM1976:855(anonymous function) angular.js:18332jQuery.event.dispatch jquery.js:4641elemData.handle

我不确定这个错误指的是什么?如果它指的是“$http”上的“post”方法,那么我很困惑。。提前感谢您的帮助:)

函数
postName
不需要将这些变量传递给它
$scope,$http
它只需要
dataToPost
其他两个变量已经可以访问了。你的函数应该是这样的

function postName (dataToPost) {

  $http.post('/name', dataToPost).
  success(function(data) {
    $scope.error = false;
    $scope.data = data;
  }).
  error(function(data) {
    $scope.error = true;
    $scope.data = data;
  });
}

函数
postName
不需要将这些变量传递给它
$scope,$http
它只需要
dataToPost
其他两个变量已经可以访问了。你的函数应该是这样的

function postName (dataToPost) {

  $http.post('/name', dataToPost).
  success(function(data) {
    $scope.error = false;
    $scope.data = data;
  }).
  error(function(data) {
    $scope.error = true;
    $scope.data = data;
  });
}

这是指您建议的“$http”上的“post”方法

您需要在控制器函数中添加$http作为参数,以便angular将注入它(就像您对$scope所做的那样)

我对代码做了另一个更改,从内部函数中删除了$scope和$http参数,因为它们在函数中是封闭的

angular.module('sayHiApp')
  .controller('MainCtrl', function ($scope, $http) {

// Accepts form input
$scope.submit = function() {

  // POSTS data to webservice
  postName($scope.input);

  // GET data from webservice
  var name = getName();

  // DEBUG: Construct greeting
  $scope.greeting = 'Sup ' + name + ' !';

};

function postName (dataToPost) {

  $http.post('/name', dataToPost).
  success(function(data) {
    $scope.error = false;
    $scope.data = data;
  }).
  error(function(data) {
    $scope.error = true;
    $scope.data = data;
  });
}

// GET name from webservice
function getName () {

  $http.get('/name').
  success(function(data) {
    $scope.error = false;
    $scope.data = data;

    return data;
  }).
  error(function(data) {
    $scope.error = true;
    $scope.data = data;

    return 'error name';
  });
}
});

这是指您建议的“$http”上的“post”方法

您需要在控制器函数中添加$http作为参数,以便angular将注入它(就像您对$scope所做的那样)

我对代码做了另一个更改,从内部函数中删除了$scope和$http参数,因为它们在函数中是封闭的

angular.module('sayHiApp')
  .controller('MainCtrl', function ($scope, $http) {

// Accepts form input
$scope.submit = function() {

  // POSTS data to webservice
  postName($scope.input);

  // GET data from webservice
  var name = getName();

  // DEBUG: Construct greeting
  $scope.greeting = 'Sup ' + name + ' !';

};

function postName (dataToPost) {

  $http.post('/name', dataToPost).
  success(function(data) {
    $scope.error = false;
    $scope.data = data;
  }).
  error(function(data) {
    $scope.error = true;
    $scope.data = data;
  });
}

// GET name from webservice
function getName () {

  $http.get('/name').
  success(function(data) {
    $scope.error = false;
    $scope.data = data;

    return data;
  }).
  error(function(data) {
    $scope.error = true;
    $scope.data = data;

    return 'error name';
  });
}
});

你到底是在把$http参数传递给函数吗。。是的,这就是问题所在。对这件事很陌生。谢谢!:)你到底是在把$http参数传递给函数吗。。是的,这就是问题所在。对这件事很陌生。谢谢!:)