2017-02-13 1 views
0

Я определил функцию JavaScript с помощью настраиваемой службы, и я вызвал эту функцию, используя службу в моем контроллере. Эта функция использует два параметра: первый вход, который я получаю, нажав ниже API, а второй - значение года, которое я получаю с помощью директивы ng-model. Когда я вызываю эту функцию в контроллере, я получаю ошибку, например type is not defined или id 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; 

      } 
     } 
    }) 
Смежные вопросы