div 在 ng-repeat 中没有更新?

div in ng-repeat is not getting updated?

我正在从 http get 请求获得响应,我正在使用该响应在数据中进行迭代

<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

get 请求的响应
{
   "Id": "44442232",
    "profiles": [
        {
           "type": "Friend",
           "username": "Username 1",
         },
         {
            "type": "Student ",
            "username": "Username 2",
           }
       ]
   } 

我对 test2.json

的 get 请求的响应
{
   "Id": "44442232",
    "profiles": [
        {
           "type": "Friend",
           "username": "Username 4",
         },
         {
            "type": "Student ",
            "username": "Username 5"
           }
       ]
   } 

我在更新 array.The 数组后尝试了 console.log,但是 ng-repeat 中的 div 没有更新?

首先,我认为您不需要 $scope.$apply() 来触发摘要循环。您处于 angular 上下文中。

其次,您在调用 .then() 时缺少一个 ')'。您目前有 '.then(function(){};'

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

你也有一个静默失败,或者它是控制台中的一个错误,并且为 ng-repeat 处理的 html 是空白的,或者你得到 angular 插值语法 {{ profile.username}}?

请在末尾添加“)”以关闭您的 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 代码并检查。一旦修复,请告诉我。编码愉快:)