2014-10-02 55 views
1

我有一個webapp和兩個我想用的模型。一個模型是學員,另一個模型是TraineeStatus。我想獲得一個TraineeStatus的數組或列表,然後將它傳遞給AngularJS在select方法中查看它的顯示,最好的方法是什麼?獲取模型中的對象列表並實現ng-repeat

Trainees.java

@Entity 
public class Trainees { 

    @Id 
    @GeneratedValue 
    private int traineesID; 
    private int groupsID; 
    @ManyToOne 
    private TraineeStatus traineestatus; 
    private int customersID; 
    private String name; 
    private String surname; 
    private String phoneDetails; 
    private String email; 

    public Trainees(){ 

    } 

    public Trainees(String name, String surname, String phoneDetails, String email, int id, int groupsID, TraineeStatus traineestatus, int customersID) { 
     super(); 
     this.name = name; 
     this.surname = surname; 
     this.email = email; 
     this.phoneDetails = phoneDetails; 
     this.groupsID = groupsID; 
     this.traineestatus = traineestatus; 
     this.customersID = customersID; 
    } 

    //getters and setters 

    @Override 
    public boolean equals(Object object) { 
     if (object instanceof Trainees){ 
      Trainees contact = (Trainees) object; 
      return contact.traineesID == traineesID; 
     } 

     return false; 
    } 

    @Override 
    public int hashCode() { 
     return traineesID; 
    } 
} 

TraineeStatus.java

@Entity 
@Table(name="traineeStatus") 
public class TraineeStatus { 

    @Id 
    @GeneratedValue 
    private int traineeStatusId; 
    private String value; 

    public TraineeStatus(){ 

    } 

    public TraineeStatus(String value, int id) { 
     super(); 
     this.value = value; 
    } 

    //getters and setters 

    @Override 
    public boolean equals(Object object) { 
     if (object instanceof TraineeStatus){ 
      TraineeStatus value = (TraineeStatus) object; 
      return value.traineeStatusId == traineeStatusId; 
     } 

     return false; 
    } 

    @Override 
    public int hashCode() { 
     return traineeStatusId; 
    } 
} 

我的觀點:

<div class="input-append"> 
         <select 
           required 
           ng-model="contact.traineestatus" 
           name="traineestatus.id" 
           placeholder="<spring:message code='sample.status'/> "> 
         <option ng-repeat="trainee in contact.traineestatus" value="{{trainee.id}}">{{trainee.value}}</option> 
         </select> 
        </div> 
        <div class="input-append"> 
         <label> 
           <span class="alert alert-error" 
             ng-show="displayValidationError && updateContactForm.traineestatus.id.$error.required"> 
            <spring:message code="required"/> 
           </span> 
         </label> 
        </div> 
與contact.traineestatus

目前返回與ID和價值的一個對象,但我會喜歡得到一個數組。

我想利用對象,所以我會有一個選擇功能,它顯示的值,並將保存該Id並將其保存在受訓人表中。

有沒有辦法利用這個對象並在我的選擇中使用它?謝謝你的問候!

+0

只是做'學員在contact.traineestatuss'和同時做表達做'{{trainee.id}}'和{{trainee.value}}'見鏈接https://docs.angularjs.org/api/ng/directive/ngRepeat – 2014-10-02 09:26:32

+0

@SajanChandran它的工作,但不知何故,現在我得到空白對象。該對象只有id和value,通過contact.traineestatus.id它返回對象Id,但在ng-repeat內部使用它並調用時,如上所述,trainee.id id不顯示它。感謝您的快速回復。 – Spinxas 2014-10-02 09:38:59

+0

@SajanChandran我已經修改了這個問題,因爲這個對象不是作爲一個數組,而是一個具有ID和值的對象。 – Spinxas 2014-10-02 10:30:32

回答

2

這有點難以解釋,所以我會盡量保持簡單。

首先,您需要牢記TraineeStatus列表不會在具有聯繫人/受訓者列表的相同請求中檢索到,您將需要單獨的HTTP請求來獲取該列表。

ContactRepository獲取所有Trainees記錄相同,您需要一個TraineeStatusRepository以獲取所有TraineeStatus記錄。然後,在你的服務之一,你需要一個方法來獲得TraineeStatus列表,像這樣:

private List<TraineeStatus> findAllTraineeStatus() { 
    return traineeStatusRepository.findAll(); 
} 

之後,你將需要定義一個HTTP API訪問列表(即GET http://example.com/traineeStatus)。這個想法可能與您必須檢索ContactList相同。

然後,在您的AngularJS應用程序中,您將需要使用函數來加載列表TraineeStatus。例如:

$scope.getTraineeStatus = function() { 
    // assuming the HTTP API is: GET http://example.com/traineeStatus 
    $http.get('http://example.com/traineeStatus', config) 
     .success(function (data) { 
      $scope.traineeStatus = data; 
     }) 
     .error(function (err) { 
      // handle error 
     }); 
} 

然後通過$scope.traineeStatus財產上的ng-repeat循環:

<select 
     required 
     ng-model="contact.traineestatus" 
     name="traineestatus.id" 
     placeholder="<spring:message code='sample.status'/> "> 
<option ng-repeat="status in traineeStatus" value="{{status.id}}">{{status.value}}</option> 
</select> 
+0

非常感謝你的回答,你達到了我的目標,但我面臨的問題是,我不能使用trainingeStatus循環,就像你在contactsController裏面顯示的那樣,你說的一切都是正確的,只需要解決這個問題我一次不能使用兩個控制器。例如:我在angularJS中使用contactsController來操縱顯示的表,並且其中一列需要您可以操縱狀態視圖的回答方法。我希望你明白我的目標。 :) 謝謝! – Spinxas 2014-10-02 22:45:37

+0

您可以同時使用2個控制器。檢查AngularJS [範圍的原型繼承](http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs)。同時檢查這個** [Plunker](http://plnkr.co/edit/AhD6xRzfIMTix1W9wdR2?p=preview)**,看看它是否有幫助。 – bmleite 2014-10-03 09:31:36