2016-05-12 5 views
0

私はAlgoliaで検索を行い、結果を返す単純なhtmlファイルを持っています。結果をコンソール化できますが、ビューから$ scope.usersにアクセスすることはできません。私はどのように$ scope.usersを見ることができます。

は、ここに私のapp.jsが

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

    myApp.controller('usersController', function($scope) { 
     $scope.users = []; 

     var client = algoliasearch('my_app_id', 'my_app_key'); 
     var index = client.initIndex('getstarted_actors'); 

     index.search('john', function searchDone(err, content) { 
      $scope.users.push(content.hits); 
      console.log(content.hits); 
     }); 

    }); 

ファイルである。ここ

<div class="results" ng-controller="usersController"> 
    <div ng-repeat="user in users"> 
     <h3>{{ user.name }}</h3> 
    </div> 
</div> 

ノート私のHTMLビューファイルです:htmlタグで指定したNG-アプリ= "て、myApp" 属性。

+0

これは正しいと思われます。 – ryanyuyu

+0

{{user}}は何を印刷しますか?あなたはユーザーに名前プロパティを持っていないと思います。 –

+0

Sintaxが古いように見える、* ng-controller = "usersController as user" *そして* ng-repeat = "usr in user.users" *と* {{usr.name}} *、明らかにあなたの$ scope.users .push()は本当に押しています – sbaaaang

答えて

1

あなたindex.searchコールは角$digestサイクルをトリガされていないので、それは最も可能性が高いだ - $timeoutで別の方法 - 手動$apply$apply()$digest already in progressエラーをスローする可能性$timeout

index.search('john', function searchDone(err, content) { 
    $scope.users.push(content.hits); 
    $scope.$apply(); 
}); 

のいずれかで1をトリガ

myApp.controller('usersController', function($scope, $timeout) { 
    index.search('john', function searchDone(err, content) { 
     $timeout(function() { 
      $scope.users.push(content.hits); 
     }); 
    }); 
}); 
+0

'$ scope。$ evalAsync()'私はこう言っています:$ timeoutの代わりにPを返します。 – sbaaaang

+0

'$ apply'への呼び出しをラップする' $ timeout'の必要はありません。https://docs.angularjs.org/api/ nog/service/$ timeoutこれは 'invokeApply'をfalseに設定することで消すことができます(デフォルトはtrue) –

+0

私は$ scope.users.push()が本当にプッシュしていないと思います。なぜなら、私が$ scope.usersをindex.search function()の外側に置いているのは、ちょうどconsolingの空の[]配列だからです。私は何をすべきか? –

0

お試しくださいあなたのバインディングを更新する

index.search('john', function searchDone(err, content) { 
    $scope.users.push(content.hits); 
    console.log(content.hits); 
    $scope.$apply(); 
}); 
0

algoliasearchは角度の枠組みへのネイティブ、それは注入されたサービスだように見えるので、ないことはありません。 $scope.$apply()に電話してみてください。

関連する問題