2016-10-18 2 views
0

Я получаю ответ от HTTP GET запрос и Iam используя ответ на итерацию в данныхdiv в ng-repeat не обновляется?

<div id="container" ng-app="myApp" ng-controller="myctrl"> 
    <div ng-repeat="profile in profiles"> 
      <p>{{profile.username}}</p> 
    </div> 
</div> 

Это для добавления одного профиля по щелчку

<input ng-click="addProfile()" type="button" value="add Profile" /> 

Здесь мой запрос на получение в контроллере

var app = angular.module('myApp', []); 
app.controller('myctrl', function($scope, $http) { 
$scope.profiles = []; 
$http.get("test1.json") 
.then(function(response) { 
    $scope.profiles = response.data.profiles; //Response is provided below 
}); 
$scope.addProfile = function(){ 
     $http.get('test2.json') 
    .then(function(response) { 
     alert("af"); 
     $scope.items = response.data.profiles; //Response is provided below 
     $scope.profiles.push($scope.items); 
     console.log($scope.profiles); //gives the update Array 

      }); 
     }); 
}); 

ответ мой запрос получите в test1.json

{ 
    "Id": "44442232", 
    "profiles": [ 
     { 
      "type": "Friend", 
      "username": "Username 1", 
     }, 
     { 
      "type": "Student ", 
      "username": "Username 2", 
      } 
     ] 
    } 

ответ мой запрос получите в test2.json

{ 
    "Id": "44442232", 
    "profiles": [ 
     { 
      "type": "Friend", 
      "username": "Username 4", 
     }, 
     { 
      "type": "Student ", 
      "username": "Username 5" 
      } 
     ] 
    } 

Я попытался console.log после обновления в массиве . Массив обновляется, но div в ng-repeat не обновляется?

+0

ваш код выглядит хорошо, https://plnkr.co/edit/LfnTyxX6Iw3GLcPxRNbf?p=preview – Sajeetharan

+0

@Sajeetharan Он отлично работает именно так. Но вы не написали '$ scope.profiles' в' $ http get request', где происходит изменение. – kevin

+0

[Здесь] (https://embed.plnkr.co/YIHDBAeIF9v27qbwEXmW/) работает пример с вызовом $ http – Thaadikkaaran

ответ

2

Пожалуйста, закройте свой JSON вызывая запрос, поставив ')' в конце. В этом нет никакой ошибки, и тот же код работает для меня отлично. // Код идет здесь

var myApp = angular.module("myApp", []); 
myApp.controller("myctrl", function($scope, $http) { 

$http.get('test1.json') 
.then(function(response) { 
    $scope.profiles = response.data.profiles; //Response is provided below 
}); 

    $scope.addProfile = function(){ 
    $http.get('test2.json') 
    .then(function(response) { 
     $scope.items = response.data.profiles; //Response is provided below 
     angular.forEach($scope.items, function(value) { 
      $scope.profiles.push(value); 
     }); 
     console.log($scope.profiles); 

    }); 

}; 

});

Этот обновленный код js и проверка. Как только это исправлено, дайте мне знать. happy coding :)

+0

вопрос был обновлен, пожалуйста, свяжитесь с нами. – kevin

+0

Привет, Я видел некоторые примеры plnkr на этой странице. что вы ищете. Так как я получил обновленный div в моем примере. – Manikandan

+0

вы можете e url, в котором вы видели примеры – kevin

1

Прежде всего, я не думаю, что вам нужно $ scope. $ Apply(), чтобы вызвать цикл дайджеста. Вы находитесь в угловатом контексте.

Во-вторых, вам не хватает «)», когда вы звоните .then(). У вас «.Затем (функция() {};»

В-третьих, ваш объект ответа не должен иметь запятую после свойства имени пользователя, если это свойство является последним в объекте

также. у вас есть молчащий сбой, или это ошибка в консоли, а обработанный html для ng-repeat пуст или вы получите синтаксис угловой интерполяции {{profile.username}}?

+0

Я обновил question.please, см. Выше, и помогите мне разобраться в этом – kevin

+0

Все еще не хватает ')' на http-вызове. $ http.get ("test1.json") . then (функция (ответ) { $ scope.profiles = response.data.profiles; }; ** должно быть ** $ http.get ("test1 .json ") .then (function (response) { $ scope.profiles = response.data.profiles; }); – nony

+0

Я изменил. Но это не проблема. – kevin

Смежные вопросы