angularjs - angular 指令处理 http 请求

标签 angularjs http directive

我有 angular 指令接受 url 来获取远程数据:

<my-tag src="http://127.0.0.1/srv1">...

指令本身:

app.directive('myTag', ['$http', function($http) {
return {
    restrict: 'E',
    transclude: true,
    replace: true,  
    //template: '<div ng-repeat="imgres in gallery">{{imgres.isUrl}}\'/></div>',
    scope:{
        src:"@",            //source AJAX url to dir pictures
    },
    controller:function($scope){
        console.info("enter directive controller");
        $scope.gallery = [];
        $http.get($scope.src).success(function(data){
           console.info("got data");
           $scope.gallery.length = 0;
           $scope.gallery = data;
        });
    }
}

一般来说它是有效的,我可以在 FireBug 控制台中看到:

enter directive controller
GET http://127.0.0.1/srv1
got data

但是如果我将指令的第二个实例绑定(bind)到另一个 url:

<my-tag src="http://127.0.0.1/srv2">...

仅适用于以下日志:

enter directive controller
GET http://127.0.0.1/srv1
enter directive controller
GET http://127.0.0.1/srv2
got data             <-- as usual it relates to first directive

你能帮我看看 2 个指令实例有什么问题吗

最佳答案

首先我没有发现任何问题。您多次使用指令,因此隔离范围是正确的方法。

我刚刚将 src:"@" 更改为 src:"="

演示 Fiddle

HTML

<div ng-controller = "fessCntrl"> 
    <my-tag src="'http://maps.googleapis.com/maps/api/geocode/json?address=Singapore, SG, Singapore, 153 Bukit Batok Street 1&sensor=true'"></my-tag>

    <my-tag src="'http://maps.googleapis.com/maps/api/geocode/json?address=Singapore, SG, Singapore, 3 Bukit Batok Street 1&sensor=true'"></my-tag>        
</div>

JS

app.directive('myTag', ['$http', function($http) {
return {
    restrict: 'E',
    transclude: true,
    replace: true,     
    scope:{
        src:"="       
    },
    controller:function($scope){
        console.info("enter directive controller");
        $scope.gallery = [];

    console.log($scope.src);

        $http({method: 'GET', url:$scope.src}).then(function (result) {
                           console.log(result);                              
                        }, function (result) {
                            alert("Error: No data returned");
                        });
    }
}
}]);

关于angularjs - angular 指令处理 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22142017/

相关文章:

javascript - ICE 失败,您的 TURN 服务器似乎已损坏,请参阅 :webrtc for more details

rest - Angular 2 auth http header 为空

image - 指定 Sphinx(重组文本)格式的在线图像

javascript - 如何遍历 JavaScript 对象以找到父对象

javascript - 处理同一页面中多种表单的 Angular ng-model

sockets - go net/http unix域套接字连接

javascript - 包装其元素的 Angular 属性指令

Angular2 指令 - 具有多个 ID 的选择器

javascript - 是否可以将 ng-switch-when 属性放在多个元素上?

javascript - 如何获取按钮单击 Angular 对象值?