Javascript 在指令内部的控制器内部进行http调用

Javascript 在指令内部的控制器内部进行http调用,javascript,angularjs,Javascript,Angularjs,我有一个名为TestServlet.java的servlet,它返回一些数据(返回什么并不重要,只返回一些文本) 以下是我正在创建的ng指令: (function() { var aMod = angular.module('aMod', []); aMod.directive('aDir', function($http) { return { restrict : 'E', templateUrl : "tes

我有一个名为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>

这是一个测试部分html

{{at.test}
{{at.diranswer}}
{{at.direrror}
我无法将servlet返回的文本分配给at.diranswer。你能帮我解决这个问题吗

谢谢,
Turik

$http
回调中
this
的值与存在
diranswer
this
不同。因此,当您在回调中设置它时,您是在一个完全不同的对象上设置它。您需要在发出调用之前保存该值:

var self = this;
$http(req).then(function(response) {
     self.diranswer += response.data;
     console.log(self.diranswer);
}, function(response) {
     self.direrror = response.data;
});

非常感谢“sma”。它正在工作。我知道我在胡闹“这个”,但不知道该怎么做。当然。很乐意帮忙。如果答案解决了您的问题,请接受。我没有看到“接受”按钮或链接,我只是向上投票。您应该在问题旁边的向上/向下箭头下方看到复选标记。