AngularJS在模板中的指令内显示HTTP请求的结果

时间:2017-07-17 09:06:14

标签: angularjs data-binding angular-directive

我第一次加载AngularJS(1.6)指令时尝试发出GET请求,并在指令模板中显示结果。

我到目前为止所做的是以下内容:

JS:

app.directive("myDirective", ['$http', function($http) {
    return {
        restrict: 'AE',
        attrs: {
            foo : String,
            onResponse : function(response){
                this.foo = response.data; 
            }
        },
        templateUrl: 'templates/my-directive.html',

        compile: function(scope, element, attrs) {
            $http({
                method: 'GET',
                url: 'my/url'
            }).then(
                attrs.onResponse
            );
        }
    }
}]);

HTML模板:

<div id="my-directive">
    foo: <span>attrs.foo</span>
</div>

有没有办法正确地做到这一点?

提前致谢!

1 个答案:

答案 0 :(得分:0)

好吧,我设法通过添加一个控制器来做我想要的事情:

app.controller('myDirectiveController', function ($scope, $http) {
    $scope.foo;
    $scope.onResponse = function(response){
       $scope.foo= response.data;
    }
    $http({
            method: 'GET',
            url: 'my/url'
        }).then(
            $scope.onResponse
        );
});

,其中

<div id="my-directive">
    foo: <span>{{foo}}</span>
</div>

,模板如下所示:

{{1}}

可能这不是正确的方法,但它有效..任何建议都是受欢迎的!