在POST请求中使用这个vs $ scope

这个问题在这里已经有了答案:

  • AngularJS控制器中的'this'与$ scope有关的7个答案

  • 你需要认识到Javascript有多个作用域,而this关键字指的是你所在的作用域。

    然后,就像@Henri S提到的那样,你也应该认识到你的控制器的范围,它是一个JavaScript构造器函数,与你在里面使用的$scope 。 Angular使用的$ scope是一个与控制器相关的对象,它真的是一个开始的视图模型。 你的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);
            });
        };
    });
    

    $ scope!= this。

    '这'是上下文敏感的,与他的'直接父'有关。

    如果使用'controller as'语法,则不需要$ scope。

    但是,如果您仍想使用$ scope,请在控制器中使用$ scope.formData。

    链接地址: http://www.djcxy.com/p/77795.html

    上一篇: the use of this vs $scope in a POST request

    下一篇: What's the difference between these 2 Angular code snippets?