Angular post请求无法正常工作

时间:2016-08-12 21:56:48

标签: javascript jquery angularjs angularjs-scope

这是我的模块:

angular.module('ngDetails', ['])
.constant('API', 'http://myserver.com/dir/api')
.controller('carDetails', carDetails)

这是我的控制器:

function carDetails($scope, CarDetailService) {
  CarDetailService.getCar().success(function(details) {

    $scope.details = details;

    carID = $scope.details['ID'];

    $scope.approve = function($scope, $http, API, Message) {
      $http.post( API + '/car/' + carID , { Message: Message } ).
      success(function(data) {
        $scope.approve = data;
      })
    }

  });

这是我的HTML:

<div ng-controller="carDetails">
  <textarea placeholder="Message" ng-model="Message"></textarea>
  <button ng-click="approve()">Approve</button>
</div>

我要做的是向我的API发送一个帖子请求,该请求会向用户发送一条消息,用户在进入&#34;批准&#34;之前将其放入textarea框内。按钮。但当我点击&#34;批准&#34;按钮我收到错误说 - &#34;无法阅读财产&#39; post&#39;未定义的m。$ scope.approve&#34;。我该如何解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

这是因为您需要在构造函数上需要DI项,而不是在批准函数中。

  function carDetails($scope, CarDetailService, $http, API, Message) {
  CarDetailService.getCar().success(function(details) {

    $scope.details = details;

    carID = $scope.details['ID'];

    $scope.approve = function() {
      $http.post( API + '/car/' + carID , { Message: Message } ).
      success(function(data) {
        $scope.approve = data;
      })
    }

  });

答案 1 :(得分:0)

当您使用角度服务或您自己的构建服务并且您希望在服务器的控制器中使用它们时,您需要注入它们

 $scope.approve = function($scope, $http, API, Message) {
      $http.post( API + '/car/' + carID , { Message: Message } ).//$http?
      success(function(data) {
        $scope.approve = data;
      })

像这样注入

function carDetails($scope, CarDetailService,$http) {
  CarDetailService.getCar().success(function(details) {

    $scope.details = details;

    carID = $scope.details['ID'];

    $scope.approve = function($scope, $http, API, Message) {
      $http.post( API + '/car/' + carID , { Message: Message } ).
      success(function(data) {
        $scope.approve = data;
      })
    }

  });