【问题标题】:Angular post request not working not working角度发布请求不起作用
【发布时间】:2016-08-12 21:56:47
【问题描述】:

这是我的模块:

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 发送一个发布请求,该请求会发送一条消息,用户在点击“批准”按钮之前将其放入 textarea 框内。但是当我点击“批准”按钮时,我收到一条错误消息 - “无法读取 m.$scope.approve 处未定义的属性 'post' ”。我该如何解决这个问题?

提前致谢。

【问题讨论】:

    标签: javascript jquery angularjs angularjs-scope


    【解决方案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;
          })
        }
    
      });
    

    【讨论】:

      【解决方案2】:

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

       $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;
            })
          }
      
        });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-13
        相关资源
        最近更新 更多