2016-08-08 2 views
1

저는 Angular를 처음 사용하기 때문에 ng-repeat에서 왜 내 개체의 첫 번째 요소 만 표시하는지 알 수 없습니다. 여기 AngularJs ng-repeat는 첫 번째 요소 만 표시합니다.

는 여기

<div ng-app="GroupApp"> 
<div ng-controller="GroupCtrl"> 
<div id="divEditRow" class="row"> 
    <div class="col-lg-8" ng-repeat="data in editGroups track by $index"> 
      <div class="input-group input-group-lg" > 
       <input class="form-control input-lg" ng-model="data[$index].GroupName" /> 
       <span class="input-group-btn"> 
        <button type="button" class="btn btn-info btn-flat"><i class="fa fa-pencil"></i></button> 
        <button type="button" class="btn btn-danger"><i class="fa fa-trash"></i></button> 
       </span> 

      </div> 
    </div> 
    </div> 
    </div> 
</div> 

내 AngularJS와 내 HTML입니다 :

var app = angular 
     .module('GroupApp', []) 
     .controller('GroupCtrl', function ($scope, AddGroup, $http) { 
      var id_generator = function (id) { 
       return id + 1 
      } 
      $scope.groups = [{ 'id': 1, 'name': '' }]; 
     // $scope.editGroups = new Array(); 
      $http.get("/Group/GetGroups") 
       .success(function (data) { 
        $scope.editGroups = data; 
       }); 
}) 

나는 화면에 {{데이터}} 기록 할 때 데이터가 올바르게 B/C를 검색되는 알고 다음이 반환됩니다.

[{"CompetencyGroupID":52,"GroupName":"Quality Control","CreateDateTime":"/Date(1470675542267)/","CreateUserId":137,"ModifiedDateTime":null,"ModifiedUserID":null},{"CompetencyGroupID":53,"GroupName":"Quality","CreateDateTime":"/Date(1470675715943)/","CreateUserId":137,"ModifiedDateTime":null,"ModifiedUserID":null},{"CompetencyGroupID":54,"GroupName":"adsf","CreateDateTime":"/Date(1470681237727)/","CreateUserId":137,"ModifiedDateTime":null,"ModifiedUserID":null}] 

이것은 내 C# Co 관리자

public JsonResult GetGroups() 
    { 
     List<CompetencyGroup> groupList = new List<CompetencyGroup>(); 

     using (var db = new SSITrainingEntities()) 
     { 
      //return (from g in db.CompetencyGroups 
      //  select g).ToList(); 
      groupList = db.CompetencyGroups.ToList(); 
     } 
     var j = Json(new { Response = groupList }, JsonRequestBehavior.AllowGet); 
     return j; 
     //return groupList; 
    } 

내가 뭘 잘못하고 있니?

+1

NG 모델 = 데이터는이 방법 NG 모델 = "data.GroupName"에 사용해야 모델이다 "데이터 [$ 지수] .GroupName". 확인할 수 있습니까? –

+0

네, 이전에이 방법을 시도했지만 아무 것도 반환하지 않았습니다. 심지어 첫 번째 요소 인 – Eric

답변

3

데이터 변수에 원래 배열로 액세스하려고합니다. 데이터 변수는 editGroups 배열 안에있는 실제 요소 (이 경우에는 객체)입니다. data.PropertyName을 사용하여 배열 내의 각 객체에 액세스 할 수 있습니다.

: 나는 HTTP 호출을 제거하고 직접 데이터 제공을 사용했다.

var app = angular 
 
     .module('GroupApp', []) 
 
     .controller('GroupCtrl', function ($scope, $http) { 
 
     var data = [{"CompetencyGroupID":52,"GroupName":"Quality Control","CreateDateTime":"/Date(1470675542267)/","CreateUserId":137,"ModifiedDateTime":null,"ModifiedUserID":null},{"CompetencyGroupID":53,"GroupName":"Quality","CreateDateTime":"/Date(1470675715943)/","CreateUserId":137,"ModifiedDateTime":null,"ModifiedUserID":null},{"CompetencyGroupID":54,"GroupName":"adsf","CreateDateTime":"/Date(1470681237727)/","CreateUserId":137,"ModifiedDateTime":null,"ModifiedUserID":null}]; 
 
      var id_generator = function (id) { 
 
       return id + 1 
 
      } 
 
      $scope.groups = [{ 'id': 1, 'name': '' }]; 
 
     // $scope.editGroups = new Array(); 
 
      $scope.editGroups = data; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 
 

 
<div ng-app="GroupApp"> 
 
<div ng-controller="GroupCtrl"> 
 
<div id="divEditRow" class="row"> 
 
    <div class="col-lg-8" ng-repeat="data in editGroups track by $index"> 
 
      <div class="input-group input-group-lg" > 
 
       <input class="form-control input-lg" ng-model="data.GroupName" /> 
 
       <span class="input-group-btn"> 
 
        <button type="button" class="btn btn-info btn-flat"><i class="fa fa-pencil"></i></button> 
 
        <button type="button" class="btn btn-danger"><i class="fa fa-trash"></i></button> 
 
       </span> 
 

 
      </div> 
 
    </div> 
 
    </div> 
 
    </div> 
 
</div>

UPDATE : 당신이 그룹의 배열을 포함하는 객체라고 응답 전달하는 것처럼

당신의 C#의 API 컨트롤러 방법을 기반으로 보인다. 새 Object를 제거하고 groupList var를 첫 번째 인수로 직접 전달하거나 성공 콜백을 변경하여 Response 속성에 액세스 할 수 있습니다.

.success(function (data) { 
    $scope.editGroups = data.Response; 
}); 
+0

네가 확실히 작동 하겠지만, 검색하는 데이터는 내 DB에서 가져온 것입니다. 하드 코딩 된 데이터는 아닙니다. – Eric

+0

데이터를 가져 오는 C# 컨트롤러를 포함하도록 질문을 업데이트했습니다. – Eric

+0

이 답변으로 문제가 해결되지 않으면 여기에 올바른 개체 구조를 추가해야합니다. 크롬의 개발자 도구 인 네트워크 탭에서 백엔드의 응답 데이터를 확인할 수 있습니다. – oguzhan00

관련 문제