2016-11-06 8 views
2

私はgithubリポジトリで検索を実装しています。 ここから取得した情報を表示する必要があります:https://api.github.com/search/repositories?q=bootstrap。例えばビューまたはHTMLに変換する。返されたjsonを角度表示で表示する方法は?

<div ng-app="newsearchApp"> 
<div ng-controller="MainCtrl"> 
    <form action="#/about" method="get"> 
    <input ng-model="searchText" /> 
    <button ng-click="search()">Search</button> 
    </form> 
</div> 
</div> 

Githubリポジトリを検索するコード。

angular.module('newsearchApp') 
.controller("MainCtrl", ["$scope", function($scope) { 
$scope.searchText = ""; 
$scope.search = function() { 
    console.log($scope.searchText); 
    var item = $scope.searchText; 
// console.log(item) 
    var GithubSearcher = require('github-search-api'); 
    var github = new GithubSearcher({username: '[email protected]', password: 'passwordHere'}); 
    var params = { 
    'term': $scope.searchText 
    }; 
    //i am not certain about the 'userData' 
    github.searchRepos(params, function(data) { 
    console.log(data); 
    $scope.userData = data; //i am not certain about the 'repoData' 
    }); 
    } }]); 

HTML

<div ng-repeat="repo in userData | filter:searchText | orderBy:predicate:reverse" class="list-group-item "> 
    <div class="row"> 
    <div class="col-md-8"> 
    <h4> 
    <small> 
    <span ng-if="repo.fork" class="octicon octicon-repo-forked"></span> 
    <span ng-if="!repo.fork" class="octicon octicon-repo"></span> 
    <small>{{repo.forks_count}}</small> 
    </small> 
    <a href="{{repo.html_url}}" target="_blank" > 
    {{repo.name}} 
    </a> 
    <small>{{repo.description}}</small> 
    <small>{{repo.stargazers_count}}</small> 
    <a href="{{repo.open_issues_count}}" target="_blank" > 
    Open Issues 
    </a> 
    <small>{{}}</small> 
    </h4> 
    </div> 
    </div> 
    </div> 

をJSONオブジェクトを移入する際の問題は、ここでの結果はHTMLにヌルですが、コンソールにはnullではありません。事前 で

おかげで結果がnullの

+1

"JSONオブジェクト"のようなものはありません。 'json'タグの使い方の説明を読んでください。 – trincot

+0

私の悪い、私は検索から得る情報を表示する必要があります。ありがとう – kuhle

答えて

1

は問題は角度がGitHubのサーバが応答したとビューを更新しないことに気づいていないこと、です。ビューを再レンダリングするには、Angularに手動で指示する必要があります。 $scope.$apply()を呼び出してみてください。

github.searchRepos(params, function(data) { 
    console.log(data); 
    $scope.userData = data; 
    $scope.$apply(); 
}); 

はあなたがAngularsで$httpサービスをGitHubのAPIへのリクエストを行いたい場合、これは必要ではないだろう - 何かの非同期」でライブdoesntのどの起こる場合にのみ$scope.$apply()が必要になります角度のある世界 " - たとえば、setTimeout、jQuery ajaxコールなどがあります。だから、$timeout$httpのような角度ラッパーがあります。

詳細:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

+0

typo、その$ scope。$ apply(); – nmanikiran

+0

私の答えを更新しました、ありがとう! –

+0

私は$ apply()を試しましたが、まだ空白があります。私は別のHTMLファイルの入力から検索するので、私は自分の問題は、私はHTMLファイルに "userData"を得ることができないと思う。 – kuhle

0

あなたは角度$ HTTPサービスを使用していないので、角度が変化を認識していません。

app.controller("myVm", function($scope,$http) { 
    var vm = $scope; 
    var url = "https://api.github.com/search/repositories?q=bootstrap" 
    $http.get(url).then(function onSuccess(response) { 
     vm.data = response.data; 
     console.log(vm.data); 
    }) 

}) 

HTML

<div ng-app="myApp" ng-controller="myVm"> 
    <div ng-repeat="item in data.items"> 
    {{item.full_name}} 
    </div> 
</div> 

DEMO on JSFiddle:あなたはAngularJSに$httpサービスを使用してアクセスすることができ、再レンダリングし

$scope.$apply(); 
1

のGitHubのAPIを使用して評価するため、手動で角度指示する必要があります

関連する問題