2017-02-13 2 views
0

Ich habe eine JavaScript-Funktion mit einem benutzerdefinierten Service definiert, und ich habe diese Funktion mit dem Dienst in meinem Controller aufgerufen. Diese Funktion verwendet zwei Parameter: Der erste ist die Eingabe, die ich erhalte, indem ich die unten stehende API befolge, und die zweite ist der Wert des Jahres, den ich mit der Anweisung ng-model erhalte. Wenn ich diese Funktion in meinem Controller anrufe, erhalte ich einen Fehler wie type is not defined oder id is not defined usw. Ist es der richtige Weg, eine JavaScript-Funktion im Controller aufzurufen. Bitte schlage mich vor.Kann ich mehrere Java Script-Funktionen mit dem Controller aufrufen?

$http.get("http://152.144.218.70:8080/USACrime/api/crimeMultiple?city=" +$scope.strCity + "&crime=" + $scope.type1 + "&model=" + model).success(function (result) { 
    $scope.prograssing = false; 
    console.log("manisha", $scope.strCity); 
    console.log("kanika", result); 
    $scope.output = result; 
    console.log("monga", $scope.output); 
    $scope.hex = hexafy.year_city($scope.output,$scope.type); 
    console.log("service", $scope.hex); 
}); 

myapp.js

var app= angular.module("myApp",["ngRoute","leaflet-directive","pb.ds.components"]); 
var geomarker = new L.FeatureGroup(); 
app.service('hexafy', function() { 
    this.year_city = function (input2,years) { 
     if(years.toLowerCase()=="all"){ 
     years = "2012,2013,2014,2015,2016,2017,2018,2019"; 
    } 
    var yrs = years.split(","); 
    output = {}; 
    outerBoundary = {}; 
    boundary = {}; 
    boundary["boundaryId"] = input[0]["id"]; 
    boundary["boundaryType"] = input[0]["type"]; 
    boundary["boundaryRef"] = "C1"; 
    outerBoundary["boundary"] = boundary; 
    output["boundaries"] =outerBoundary; 
    themes = []; 
    for(var i in input){ 
     crimeTheme = {}; 
     crimeThemeValue = {}; 
     crimeThemeValue["boundaryRef"] = "C1"; 
     result = []; 
     for(var j in input[i]["prediction"]){ 
      dict = {}; 
      if(yrs.indexOf(input[i]["prediction"][j]["year"])>-1){ 
       dict["name"] = input[i]["prediction"][j]["year"]+" "+input[i]["crime"]+" Crime"; 
       dict["description"] = input[i]["crime"]+" Crime for "+input[i]["prediction"][j]["year"]; 
       dict["value"] = input[i]["prediction"][j]["count"]; 
       dict["accuracy"] = input[i]["accuracy"]; 
       result.push(dict); 
      } 
     } 
     crime = input[i]["crime"].toLowerCase()+"CrimeTheme"; 
     crimeThemeValue["individualValueVariable"] = result; 
     console.log('crimeThemeValue["individualValueVariable"]',crimeThemeValue["individualValueVariable"]); 
     crimeTheme[crime] = crimeThemeValue; 
     themes.push(crimeTheme); 
     console.log("themes",JSON.stringify(themes)); 
    } 
    output["themes"] = themes; 
    console.log(output); 
    return output; 
    }; 
}); 
}); 

Antwort

0

1) .success und .error Methoden sind veraltet und es ist nicht gut, mit ihm zu gehen. Stattdessen sollten Sie besser .then(successCallback, errorCallback) verwenden

2) Um eine Service-Methode die richtige Art und Weise zu verwenden, ist es wie folgt aus:

app.service('myService', function() { 
    var service = { 
    method:method 
    }; 

    return service; 

    function method() { 
    //Logic 
    } 

}) 

Also in Ihrem Fall der Weg zu gehen ist:

app.service('hexafy', function() { 
     return { 
      years_city: function (input2, years) { 

       if (years.toLowerCase() == "all") { 
        years = "2012,2013,2014,2015,2016,2017,2018,2019"; 
       } 

       var yrs = years.split(","); 
       output = {}; 
       outerBoundary = {}; 
       boundary = {}; 
       boundary["boundaryId"] = input[0]["id"]; 
       boundary["boundaryType"] = input[0]["type"]; 
       boundary["boundaryRef"] = "C1"; 
       outerBoundary["boundary"] = boundary; 
       output["boundaries"] = outerBoundary; 
       themes = []; 
       for (var i in input) { 
        crimeTheme = {}; 
        crimeThemeValue = {}; 
        crimeThemeValue["boundaryRef"] = "C1"; 
        result = []; 
        for (var j in input[i]["prediction"]) { 
         dict = {}; 
         if (yrs.indexOf(input[i]["prediction"][j]["year"]) > -1) { 
          dict["name"] = input[i]["prediction"][j]["year"] + " " + input[i]["crime"] + 
           " Crime"; 
          dict["description"] = input[i]["crime"] + " Crime for " + input[i]["prediction"] 
           [j]["year"]; 
          dict["value"] = input[i]["prediction"][j]["count"]; 
          dict["accuracy"] = input[i]["accuracy"]; 
          result.push(dict); 
         } 
        } 
        crime = input[i]["crime"].toLowerCase() + "CrimeTheme"; 
        crimeThemeValue["individualValueVariable"] = result; 
        console.log('crimeThemeValue["individualValueVariable"]', crimeThemeValue[ 
         "individualValueVariable"]); 
        crimeTheme[crime] = crimeThemeValue; 
        themes.push(crimeTheme); 
        console.log("themes", JSON.stringify(themes)); 
       } 
       output["themes"] = themes; 
       console.log(output); 
       return output; 

      } 
     } 
    }) 
Verwandte Themen