控制器中的angularJS功能没有响应

时间:2014-01-28 12:13:34

标签: javascript json angularjs

AngularJs ng-click无响应

我正在尝试使用GitHub Search-API。 当有人点击按钮时我的控制器应该从github调用搜索这里是我的代码

HTML:

<head>
  <script src="js/AngularJS/angular.min.js"></script>
  <script src="js/Controller/RepoController.js"></script>
</head>
<body ng-controller="RepoController">
 <input type="text" ng-model="param" /><button ng-click="search()">suchen</button>
  <ul>
    <li ng-repeat="repo in repos">
        {{repo.name}}
    </li>
  </ul>

</body>

这是我的控制器:

var App = angular.module('RepoSearch', []);

function RepoController($scope, $http) {
    $scope.repos = [];

    $scope.search = function() {
        $http.get('https://api.github.com/search/repositories?q='+$scope.param).success(function(data) {
            $scope.repos = data['items'];
        }
    }

}

但是我的repos-array仍然是空的 当我用警告交换$http.get时,它工作正常。

3 个答案:

答案 0 :(得分:1)

您忘记在(之后关闭$scope.repos = data['items'];},并定义ng-app,在这种情况下,<head>可以<head ng-app="RepoSearch">:{{1}} http://docs.angularjs.org/api/ng.directive:ngApp

答案 1 :(得分:1)

原因可能是跨域调用。使用JSONP调用github。

$http.jsonp('https://api.github.com/search/repositories?q='+$scope.param+'&callback=JSON_CALLBACK'+).success(function(data) {
            $scope.repos = data['items'];
}

回调方法可能不同,所以看看这些SO帖子

Using angularjs JSONP when callback cant be defined

Using JSONP method for $http service in AngularJS

答案 2 :(得分:0)

在HTML中

<head ng-app="RepoSearch">
      <script src="js/AngularJS/angular.min.js"></script>
      <script src="js/Controller/RepoController.js"></script>
    </head>
    <body ng-controller="RepoController">
     <input type="text" ng-model="param" /><button ng-click="search()">suchen</button>
      <ul>
        <li ng-repeat="repo in repos">
            {{repo.name}}
        </li>
      </ul>

    </body>
控制器中的

var App = angular.module('RepoSearch', []);


//bind controller with your app

App.controller('RepoController',RepoController);

function RepoController($scope, $http) {
    $scope.repos = [];

    $scope.search = function() {
        $http.get('https://api.github.com/search/repositories?q='+$scope.param).success(function(data) {
            $scope.repos = data['items'];
        }
    }

}