カスタム サービスを呼び出す 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 を正常に呼び出し、すべてのパラメーターが渡されます。
ディレクティブのさまざまなポイント (リンクおよびコンパイル関数) からサービスを呼び出してみました。
余分な奇妙さは、ページの読み込み時にあり、リクエストはありません。リンクをクリックして新しいページをロードすると、リクエストが行われます。ディレクティブはサイト上でグローバルです。
コントローラー用のサービスを作成しましたが、この問題は発生していません。
アドバイスをありがとう。