2017-02-13 58 views
0

我使用自定义服务定义了一个JavaScript函数,并使用我的控制器中的服务调用了该函数。该函数使用两个参数:第一个是通过点击下面的API获得的输入,第二个是我使用ng-model指令获得的年份的值。当我在我的控制器中调用此函数时,出现如type is not definedid is not defined等错误。是否正确调用控制器中的JavaScript函数?请建议我。我可以在控制器中调用多个Java脚本函数吗?

$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; 
    }; 
}); 
}); 

回答

0

1).success.error方法已过时,这是不好去用它。相反,你最好使用.then(successCallback, errorCallback)

2)使用服务方法的正确方法是这样的:

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

    return service; 

    function method() { 
    //Logic 
    } 

}) 

所以你的情况要走的路是:

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; 

      } 
     } 
    }) 
相关问题