当前位置: 首页 > 知识库问答 >
问题:

AngularJS-在POST请求中使用这个vs$scope[重复]

暴夕
2023-03-14
var app = angular.module('TM', []);

app.controller('tableController', function($scope, $http){

    //Empty object that gets filled with data and sent as a POST request.
    this.formData = {};

    // Define process for submitting form
    //TODO: FIND OUT THE DIFFERENCE BETWEEN $SCOPE AND THIS
    this.processForm = function() {
        console.log('Inside processForm method');

        $('#addEntry').modal('hide');
        console.log($scope.formData); //If I use this here - the object is empty
        $http({
            method : 'POST',
            url :'../protocols',
            data : JSON.stringify($scope.formData), 
            headers : {
                'dataType' : "json",
                'contentType' : "application/json"
            }
        })
        .success(function(data) {
            console.log('Success: ' + data);

            //Empties the object after the POST request is done...
            $scope.formData = {}
        })
        .error(function(data){
            console.log('Error ' + data);
        });
    };
});

共有1个答案

戚弘和
2023-03-14

您需要意识到Javascript有多个作用域,this关键字指的是您正在操作的作用域。

然后,就像@Henri S提到的那样,您还应该意识到控制器的作用域(它是一个JavaScript contructor函数)与您在里面使用的$scope不同。Angular使用的$scope是一个与控制器相关联的对象,从一开始就是一个viewmodel。你的HTML,在某个控制器的控制下可以‘访问’这个对象。如果创建控制器链,$scope将原型继承。

如果我们将此应用于您的代码:

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

app.controller('tableController', function($scope, $http){

   var self = this; //We capture a reference/value of the scope of your controller

    this.formData = {};
    this.currentDataObject : {restURL: "../protocols"} 

    // Define process for submitting form
    this.processForm = function() { //Here begins a new javascript scope
        console.log('Inside processForm method');

        $('#addEntry').modal('hide');
        console.log(self.formData); // this will refer to the this.formdata

        $http({
            method : 'POST',
            url : self.currentDataObject.restURL,
            data : JSON.stringify(self.formData), 
            headers : {
                'dataType' : "json",
                'contentType' : "application/json"
            }
        })
        .success(function(data) {
            console.log('Success: ' + data);

            //Empties the object after the POST request is done...
            self.formData = {}
        })
        .error(function(data){
            console.log('Error ' + data);
        });
    };
});
 类似资料:
  • 我正在尝试使用web api,它需要在python3中使用HTTP中的Post字段(web是https)。6.2. 我已经试过了。要求但答复是 urllib。错误HTTPError:HTTP错误403:禁止 下面是我使用的代码: 但是,我使用以下代码尝试了请求库: 它起作用了。我真的很想知道不同的,因为urllib.request可以在指定数据参数时发送帖子请求。

  • 问题内容: 我一直在使用var和$ scope.varname,并且在AngularJS中都可以正常工作。我想知道两者在功能上是否有区别,哪种最佳实践可供使用? 问题答案: 是! 变量绑定到视图,其中不是,并且在声明该函数的位置是本地的!

  • 我试图从一个Angular控制器执行POST操作,当我的Java RestController不需要任何参数(例如,下面的签名只是)时,它就可以工作,但是一旦我告诉它需要一个参数,并试图在Angular的POST请求中发送它,它就会失败,出现。是否需要做一些事情来从一个角帖子中正确地发送数据?

  • 我对Angularjs是新手。我想知道以下两个代码片段之间有什么区别: i.使用以下内容定义控制器的代码:

  • 问题内容: 我不知道如何使用和。官方文档没有帮助。 我不明白的是: 他们连接到DOM吗? 如何更新对模型的DOM更改? 它们之间的连接点是什么? 我尝试了本教程,但这需要对它的理解并且理所当然。 做什么和做什么,以及如何正确使用它们? 问题答案: 您需要了解AngularJS的工作原理才能理解它。 消化周期和作用域 首先,AngularJS定义了所谓的 摘要循环 的概念。这个周期可以看作是一个循环

  • 我必须对我的应用程序做一个压力测试,以创建1000个用户。为了创建用户,我使用JSON执行POST请求: 我不知道如何使用JMeter创建多个用户。有for循环吗?另外,我如何避免代码必须是唯一的,这样每个用户都需要一个唯一的代码?