我有一个调用自定义服务的 Angular (V 1.1.5) 指令。该指令很好地调用了服务,但服务没有发出请求。下面的代码:
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 就好了,所有参数都被传递了。
我尝试从指令中的不同点调用服务(链接和编译函数)。
额外的怪异是页面加载,没有请求。单击链接以加载新页面,发出请求。该指令在站点上是全局的。
我已经为控制器创建了服务,但我没有遇到这个问题。
感谢您的建议。