2016-11-11 12 views
-1

HTTP要求から別のスコープオブジェクトに戻りオブジェクトを取得したいので、ng-repeatディレクティブのHTMLで使用できます。返されたオブジェクトを変数に取得するにはどうすればよいですか?

  1. コールHTTP機能
  2. HTTPレスポンスの値

JSスコープ変数を作成し、データ

  • ストア応答
  • を取得:

    angular.module('myApp').controller('ItemController',[ 
        '$scope', '$http', '$location', 
        function($scope, $http, $location){ 
    
        var currentLocation = $location.path(); 
    
        $scope.getItem = function(){ 
         $http.get('path/to/json/file.json').then(
         function(response){ 
          $scope.results = response.data; 
          console.log('item controller, item:', $scope.results); 
         }); 
    
        }; 
    
        $scope.item = //MAKE THIS VALUE OF THE RETURN OBJECT FROM getItem 
         console.log('scope.item', $scope.item); 
        } 
    ]); 
    

    JSON

    [ 
        { 
        "first_name": "Mega", 
        "last_name": "Man", 
        "image": "http://placehold.it/75x75" 
        } 
    ] 
    

    HTML

    がちょうどJSコール

    $scope.getItem = function(){ 
        $http.get('path/to/json/file.json') 
        .success(function(data){ 
         $scope.results=data; 
         console.log('$scope.results: ',$scope.results); 
        }).error(function(data){ 
         console.log(data); 
        }).then(
         function(){ 
         $scope.item = $scope.results; 
         console.log('$scope.item: ', $scope.results); 
         }); 
        }; 
    
  • +0

    で、配列の最初のオブジェクトを取得するために、成功コールバックにありました彼らがドライブウェイを出る前のテーブルの上に。 '$ scope.item'をコールバック内に設定する必要があります。 –

    +0

    これで、JS呼び出しを更新し、 '.success()'メソッドからの初期呼び出しで '.then()'メソッドからデータを取得して実行しました。 HTMLにどのように公開されるのでしょうか? –

    +0

    iircとまったく同じです。 .thenと$ scope.resultsは冗長ですが。私は 'データ'は、あなたが思うような構造を持っていないと思う。 –

    答えて

    0

    あなたのC更新

    <p>{{item.first_name}}</p> 
    <p>{{item.last_name}}</p> 
    <img ng-src="{{item.image}}"/> 
    

    を持ってできるようにしたいと思いますさまざまな方法でそれを行う一つの方法は、のようなsuccesserrorコールバック機能を使用することです:

    $http({method: 'GET', url: 'path/to/json/file.json'). 
         then(function(response) { 
          $scope.results = response.data; 
          console.log('item controller, item:', $scope.results); 
         }, function(response) { 
          console.log(response); 
         }); 
    
    +0

    応答をありがとう、しかし私はまだ呼び出しを変更しても固執しています。私は '{{item.name}} 'などをHTMLで言うことができる必要があります。私ができる唯一のことは、あなたの例でオブジェクト全体{'{results}}を呼び出し、JSONオブジェクト全体を返すことです。 '{{results.name}}'や '{{results.image}} 'のような詳細を呼び出すことができるようにする必要があります。 –

    +0

    私の質問を編集しました。もう一度助けてくれてありがとう。 –

    0

    起こっていた問題を:

    $http.get('path/to/json/file.json') 
           .success(function (data, status, header, config) { 
            $scope.results =data; 
          console.log('item controller, item:', $scope.results); 
           }) 
           .error(function (data, status, header, config) { 
            console.log(data); 
           }); 
    

    別のオプションは、同じようthen約束機能を使用していますコールバックが正しく機能すること.then()メソッドを.success().error()に置き換えました。呼び出されたオブジェクトは配列なので、オブジェクトプロパティを取得するためにHTMLで解析することはできませんでした。必要に応じた他の部分は何を求めていることはあなたのためのピザを拾うために誰かを送信し、それがあることを期待しに似て$scope.results=data[0]

    $scope.getItem = function(){ 
        $http.get('path/to/json/file.json') 
        .success(function(data){ 
        $scope.results=data[0]; 
        console.log('$scope.results: ',$scope.results); 
        }).error(function(data){ 
        console.log(data); 
        }); 
    }; 
    
    +0

    このコードが質問にどのように答えているか説明してください。これにより、今後の視聴者からの回答が得られます。詳細については、[回答]を参照してください。 –

    +0

    リマインダーのための明快な感謝を追加しました –

    関連する問題