Angular.js“typeError: V2.example is not a function”错误

新手上路,请多包涵

我是 angular.js 的新手,我正在关注大约一年前制作的教程我正在尝试创建一个搜索功能,该功能接受输入并在 Github.com 中搜索它 HTML 代码是:

 <!DOCTYPE html>
<html ng-app="github">

<head>
    <script src="angular.min.js"></script>
    <script src="script.js"></script>
</head>

<body ng-controller="main">
    <h1>{{message}}</h1>
    <p> {{username}} </p>
    <form name="search">
        <input type="search" placeholder="enter name" ng-model="username">
        <button type="submit" ng-click="search(username)">search</button>
    </form>
    <div>
        <h1> {{user.login}} </h1>
        <img src="http://www.gravatar.com/avatar/{{user.gravatar_id}}">
        <p> {{user.type}} </p>
    </div>
</body>

</html>

和 JS 代码:

 // Code goes here
(function () {
    var app = angular.module("github", []);
    var main = function ($scope, $http) {
        var onComplete = function (response) {
            $scope.user = response.data;
        };
        var onError = function (reasone) {
            $scope.error = "no can";
        };
        $scope.search = function (username) {
            $http.get("http://api.github.com/users/" +username).then(onComplete, onError);
        };
        $scope.message = "Git hub viewer";
    };
    app.controller("main", ["$scope", "$http", main]);
}());

这给了我一个错误 >>> TypeError: v2.search is not a function <<< 寻求帮助:我遇到了这样的问题,解决方案是不在全局类型中使用“main”函数,但“search”不是全局的我想..希望这有帮助

这是codepen链接:

http://codepen.io/ToBeM12/pen/vGvwzo

原文由 Mahmoud Mabrouk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 503
2 个回答

可能的解决办法:IIFE写错了。

 (function(){...}());

代替

(function(){...})();

目前,这是我能找到的唯一错误。

原文由 cst1992 发布,翻译遵循 CC BY-SA 3.0 许可协议

该函数与另一个变量同名并且在 $scope 中冲突

在您的情况下,只需将 $scope.search 替换为 $scope.searchuser 因为 $scope.search 已经定义了..

原文由 Rex Adrivan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题