2016-11-15 9 views
-3

Arrayオブジェクトを$http.get()に渡したいと思います。以前はすべての情報がdata.jsonファイルに保存されていましたが、ファイルを使用したくありません。コントローラのオブジェクトの配列を$scope.dataとして定義します。 我々はdata.jsonを使用しているDEMO http://plnkr.co/edit/X5ZC3UGey4Zjos7W01U1?p=preview

ワーキングDEMO http://plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=preview こちらをご覧ください。私は、コントローラにdata.json内のデータを定義したい、Plzを私はこれを使用していますか

.controller('QuestionCtrl', ['$scope', '$http', function ($scope, $http) { 
    $scope.questions = []; 
    $scope.data = { 
    "questions": [ 
    { 
     "question": "Qw1", 
     "answers": [ 
     { 
      "answers": "An1", 
      "value": 25 
     }, 
     { 
      "answers": "An2", 
      "value": 50 
     }, 
     { 
      "answers": "An3", 
      "value": 75 
     }, 
     { 
      "answers": "An4", 
      "value": 100 
     } 
     ] 
    }, 
    { 
     "question": "Qw2", 
     "answers": [ 
     { 
      "answers": "An1", 
      "value": 25 
     }, 
     { 
      "answers": "An2", 
      "value": 50 
     }, 
     { 
      "answers": "An3", 
      "value": 75 
     }, 
     { 
      "answers": "An4", 
      "value": 100 
     } 
     ] 
    } 
    ] 
} 
    $http 
    .get(JSON.stringify($scope.data)) 
    .then(function(response){ 
     $scope.questions = response.data.questions; 
    }); 
}]) 
+0

私は質問をしません。あなたは何を達成しようとしていますか? $ httpでjsonを取得しますか? –

+0

@Poyrazここでは、data.jsonを使用していますかどうかを確認してください。plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=preview私はController内のdata.json内のデータを定義したい、Plzはあなたのjsonデータと$ HTTPを1つのコントローラで – Guest

+0

として実行し、$ httpを使用する必要はありません。 –

答えて

1

をDDに教えてください、そして

$http.get('url', {params: yourArray}).then(function (result) { 
    //do sth with data 
}); 
+0

ここでは、data.jsonを使用していますかどうかを確認してください。plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=previewデータ内にデータを定義したい。PLCのjsonさん、私に教えてください – Guest

0

HTTP GETリクエストができない、それは私のために素晴らしい作品サーバーに送信するデータが含まれています。リクエストにクエリ文字列を追加できます。 $httpのオプションはparamsです。

$http({ 
    url: 'example.com', 
    method: "GET", 
    params: {...} 
}); 
+0

ここでは、data.jsonを使用していますか?http://plenkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=previewここをクリックしてください。コントローラ内のdata.json内のデータを定義したい、Plzはどうするか教えてください – Guest

0

データがコントローラで直接利用できる場合は、$ http.get()を使用する必要はありません。

You can use $scope.data instead of $scope.questions. ie in your html file use 
{{data.questions[0].question}} 
<h2>answer 1</h2> 
<p>{{data.questions[0].answers[0].value}}</p> 
<p>{{data.questions[0].answers[0].answers}}</p> 
+0

私はそれを使う必要があります。 \t ここでは、data.jsonを使用していますかどうかを確認してください。plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=preview私はコントローラのdata.json内のデータを定義したい、PLZは私に行う方法を教えてください – Guest

+0

plnkrでは、あなたは$ scope.dataのデータを正しく格納しましたか?私は、コントローラの右側の$ scope.dataにあるdata.jsonの中にデータを定義するので、「コントローラのdata.json内にデータを定義したい」という意味を理解できません。 –

0

私はこの方法を試してみました、それが正常に動作している:あなたのコントローラでたとえば あなたはこの

のように使用することができ、この配列を渡すために編曲変数

var data = Array; 
    data['Id'] = "1"; 
    data['Name'] ="Test User"; 
    data['UserName'] = "test_user"; 
    data['Email'] = "[email protected]"; 
    data['Address'] = "Test Address"; 
    data['Action'] = 'Create'; 

のような任意の配列を持っています

$scope.users = data; 

コントローラはビ​​ューページの配列を変数users として送信し、このようなものを使用できます

ng-repeat="user in users" 

注:これは、2次元配列と1次元配列で使用できます。

0

AngularJSは、非同期的にデータを取得するサービス$httpを持っています。したがって、任意のタイプのデータ(変数、配列、文​​字列)を返すことができます。

一般的な場所にデータを保存する方がよいでしょう。私は工場コントローラ間のデータを共有するために使用されるパターンを示してみましょう。まず

、あなたがyourFactory.jsファイルを作成し、次のコードを記述する必要があります:

(function() {  
    var yourFactory = function() { 
     var persons = [ 
       { 
        id: 1,      
        name: 'Jon',      
       }, 
       { 
        id: 2,      
        name: 'Ben',      
       }, 
       { 
        id: 3,      
        name: 'Joseph',      
       }, 
       { 
        id: 4,      
        name: 'Adam',      
       } 
     ]; 

     var factory = {}; 
     factory.getPersons = function() { 
      return persons; 
     }; 
     return factory; 
    }; 

    angular.module('personsApp').factory('personsFactory', yourFactory); 

}()); 

やデータを使用することができ、いくつかのあなたのコントローラを(ちょうど、以下のコントローラ用の新しい.jsファイルを作成します):

(function() 
{  
    debugger; 
    var yourController=function($scope, yourFactory) { 
       /*alert('a1');*/ 
       debugger;     

       function init() { 
        debugger; 
        $scope.yourData=yourFactory.getPersons(); 
       }   
       init(); 
      };  


    yourController.$inject=['$scope', 'yourFactory']; 

    angular.module('yourAppl').controller('yourController', yourController); 

}()); 
+0

@Guestは何か質問をしてください。私の返事があなたに役立つと感じたら、私の返事を答えとしてマークして、将来の他の人の検索を簡単にすることができます。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workをご覧ください。 – StepUp

関連する問題