2016-11-15 4 views
-3

Я хочу передать объект Array в $http.get(). Раньше вся информация хранилась в файле data.json, но я не хочу использовать файл. Хотите определить массив объекта как $scope.data в контроллере. Пожалуйста найти DEMO http://plnkr.co/edit/X5ZC3UGey4Zjos7W01U1?p=preview

Рабочая DEMO http://plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=preview здесь мы используем data.json. Я хочу, чтобы определить данные внутри 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

Я не понимаю вопрос. Чего вы пытаетесь достичь? Получение json с $ http? –

+0

@Poyraz См. Рабочий пример plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=preview здесь мы используем data.json. Я хочу определить данные внутри data.json в Controller, Plz скажите мне, как сделать – Guest

+0

как ваши данные json и $ http в одном контроллере, тогда вам не нужно использовать $ http, вы можете напрямую получить эти json. –

ответ

1

Я использую это, и он прекрасно работает для меня

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

См. Рабочий пример plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=preview здесь мы используем data.json. Я хочу определить данные внутри данных.json in Controller, Plz расскажите мне, как это сделать – Guest

0

HTTP GET запрос не может содержат данные для отправки на сервер. Вы можете добавить строку запроса в запрос. $http опция для этого params.

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

Пожалуйста, смотрите рабочий пример http://plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=preview здесь мы используем data.json. Я хочу определить данные внутри 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

BUt Мне нужно его использовать. \t См. Рабочий пример plnkr.co/edit/o6EeKnC8oFEq3GCRsQgp?p=preview здесь мы используем data.json. Я хочу определить данные внутри data.json в контроллере, Plz скажите мне, как это сделать – Guest

+0

В plnkr вы сохранили данные в $ scope.data правильно? Я не понимаю, что вы подразумеваете «Я хочу определить данные внутри data.json в Controller», потому что вы определяете данные внутри data.json в своих $ scope.data уже в контроллере? –

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" 

Примечание: это будет работать для двухмерного массива и одномерного массива.

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