ng-repeat中的div没有得到更新?

时间:2016-10-18 10:50:30

标签: javascript html angularjs get auto-update

我收到来自http get请求的响应,Iam使用响应迭代数据

<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。数组已更新,但ng-repeat中的div未更新?

2 个答案:

答案 0 :(得分:2)

请将&#39;)&#39;关闭您的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代码并进行检查。一旦修好,请告诉我。快乐的编码:)

答案 1 :(得分:1)

首先,我认为你不需要 $ scope。$ apply()来触发摘要周期。你处于有条不紊的环境中。

其次,当你打电话给 .then()时,你错过了一个')'。您目前有'。然后(function(){};'

第三,如果该属性是对象中的最后一个属性,则您的响应对象在username属性后面不应该有逗号。

你是否有静默失败,或者是控制台出错,并且ng-repeat的处理过的html是空白的,或者你得到角度插值语法{{profile.username}}?