2016-04-07 8 views
0

Я звоню в службу поддержки от AngularJS. HTML очень простой, с текстовым полем ввода и кнопкой для запроса.AngularJS call Rest Api: TypeError

// Basic.html

<!DOCTYPE html> 
<html ng-app="cgApp" > 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular-resource.js"></script> 
    <script src="../js/controller.js"></script> 
    <script src="../js/service.js"></script> 

    </head> 
    <body> 
    <div ng-controller="CgseqCtrl"> 
     <input ng-model="analysisid"><button ng-click="searchById()">Search</button> 
     <table> 
      <tr> 
       <td>{{seq.analysisId}}</td> 
       <td>{{seq.center}}</td> 
       <td>{{seq.diseaseAbbr}}</td> 
       <td>{{seq.filepath}}</td> 
       <td>{{seq.library}}</td> 
      </tr> 
     </table>   
    </div> 
    </body> 
</html> 

Я использую сервис для вызова API сидение

// service.js 
app.factory("Cgseq", function ($http) { 
    // return $resource('http://localhost:8080/cgweb/api/seqs/fdebfd6e-d046-4192-8b97-ac9f65dc2009'); 
    var service = {}; 
    service.getSeqById = function(analysisid) { 
     return http.get('http://localhost:8080/cgweb/api/seqs/' + analysisid); 
    } 


    service.getSeq = function() { 
     return $http.get('http://localhost:8080/cgweb/api/seqs/fdebfd6e-d046-4192-8b97-ac9f65dc2009'); 
    } 

    return service; 
}); 

Функция searchById() будет выполняться после того, как нажата кнопка. Он реализован в моем контроллере.

// controller.js 
var app = angular.module('cgApp', []) 

app.controller('CgseqCtrl', ['$scope', 'Cgseq', function($scope, Cgseq){ 
    $scope.searchById() = function() { 
     CgSeq.getSeqById($scope.analysisid) 
     .then(function(response){ 
      $scope.seq = response; 
     }); 
    } 
}]); 

Когда я загружаю Basic.html в браузере, даже прежде, чем я печатаю что-то в поле ввода и нажмите на кнопку, я получил следующее сообщение об ошибке:

angular.js:12416 TypeError: $scope.searchById is not a function 
    at new <anonymous> (controller.js:8) 
+1

Вы пытаетесь использовать $ scope.searchById = function() {....} Надеемся, это решит вашу проблему. –

ответ

2

Вы должны удалить () от $scope.searchById() = function

и исправить опечатку (случай-чувствительности) для Cgseq Ie:

$scope.searchById = function() { 
    Cgseq.getSeqById($scope.analysisid) 
    .then(function(response){ 
     $scope.seq = response; 
    }); 
}