【问题标题】:AngularJS call Rest Api: TypeErrorAngularJS 调用 Rest Api:TypeError
【发布时间】:2016-04-07 03:20:43
【问题描述】:

我正在从 AngularJS 调用 restful 服务。 HTML 非常基础,带有一个输入文本框和一个用于查询的按钮。

//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>

我使用服务调用rest 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)

【问题讨论】:

  • 您尝试使用 $scope.searchById = function() {....} 希望这能解决您的问题。

标签: angularjs rest http


【解决方案1】:

您应该从$scope.searchById() = function 中删除()

并更正Cgseq 的拼写错误(区分大小写) 即:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2019-07-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多