http控件内部的http调用

时间:2015-11-19 17:56:29

标签: javascript angularjs

我有一个名为TestServlet.java的servlet,它返回一些数据(不重要的是它返回的内容,只是一些文本)。

这是我正在创建的ng指令:

(function() {
    var aMod = angular.module('aMod', []);

    aMod.directive('aDir', function($http) {
        return {
            restrict : 'E',
            templateUrl : "test.html",
            controller : function() {
                this.test = 'this is a test variable';
                this.diranswer = 'Test: ';
                this.direrror;

                var req = {
                    method : 'POST',
                    url : '/test1/TestServlet',
                    params : {
                        p1 : 'test1',
                        p2 : 'test2'
                    }
                };
                $http(req).then(function(response) {
                    this.diranswer += response.data;
                    console.log(this.diranswer);
                }, function(response) {
                    this.direrror = response.data;
                });
            },
            controllerAs : "at"
        }
    })
})();

这是test.html文件:

<div>
    this is a test partial html
    <br>
    <input type="text" ng-model="at.test" />
    {{at.test}}
    <br>
    {{at.diranswer}}
    <br>
    {{at.direrror}}
</div>

我无法为at.diranswer分配servlet返回的文本。你能帮帮我吗?

谢谢, Turik

1 个答案:

答案 0 :(得分:2)

$http回调中的this值与diranswer存在的var self = this; $http(req).then(function(response) { self.diranswer += response.data; console.log(self.diranswer); }, function(response) { self.direrror = response.data; }); 不同。因此,当您在回调中设置它时,您将在完全不同的对象上进行设置。您需要在发出呼叫之前保存该值:

{{1}}