首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从指令调用的Angularjs $resource未发出请求

从指令调用的Angularjs $resource未发出请求
EN

Stack Overflow用户
提问于 2013-06-29 05:57:19
回答 1查看 691关注 0票数 0

我有一个Angular (V1.1.5)指令,它调用一个自定义服务。Directive可以很好地调用服务,但服务不会发出请求。代码如下:

代码语言:javascript
复制
Services.factory("storeLocator",["$resource",function($resource){
    var serviceResource=$resource("http://my.domain.com/locator",{
        country:"US",
        searchradius: "50|150",
        digits:"3"
    },{
        byCoords: {
            method:"GET",
            params: {
                longitude:"",
                latitude:""
            },
            cache:true
        },
        byZip: {
            method:"GET",
            params:{
                zip:""
            },
            cache:true
        }

    });

    return {

        byCoords:function(lon,lat,onSuccess) {


        serviceResource.byCoords({latitude:lat,longitude:lon},function(data){
                if( typeof(onSuccess)==="function"){
                    onSuccess(data);
                }
            });

        },

        byZipCode:function(zipcode,onSuccess) {
            serviceResource.byZip({address:zipcode},function(data){
                if( typeof(onSuccess)==="function") {
                    onSuccess(data);
                }
            });
        }
    };

}]);

        Directives.directive("myLocator",["storeLocator",function(storeLocator){

return{
    restrict:"AC",
    scope: {
        template:"@"
    },
    templateUrl: function(tElement,tAttrs) {

        /** Retrieve Template URL **/

    },

    controller: ["$scope",function($scope){
        var parseData=function(data){
            console.log(data);
        }

        var findStoresByGeolocation=function(position) {
            storeLocator.byCoords(position.coords.longitude,position.coords.latitude,parseData);    
        }


        if(navigator.geolocation){
            navigator.geolocation.getCurrentPosition(findStoresByGeolocation);
        }
    }],

    link:function(scope,element,attrs){



    }

}
   }]);

指令和服务都在单独的JS文件中,并被注入到我的模块中。

就像我说的,指令调用storeLocator.byCoords很好,所有的参数都被传递了。

我尝试过从指令中的不同点调用服务(链接和编译函数)。

更奇怪的是,页面正在加载,没有请求。单击链接以加载新页面,将发出请求。该指令在站点上是全局的。

我已经为控制器创建了服务,并且我还没有遇到这个问题。

谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-29 14:44:16

我认为这可能与在Angular“事件循环”之外运行的代码有关(因为它是从非Angular事件处理程序调用的)。

试试这个:

代码语言:javascript
复制
var findStoresByGeolocation = function(position) {
  $scope.$apply(function() {
    storeLocator.byCoords(position.coords.longitude,position.coords.latitude,parseData);    
  });
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17374284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档