2014-12-23 2 views
0

AngularJS ng 옵션 세트가 있고 SQL Server 데이터베이스에 "Champion"이름이 있습니다.GAP 기본 키에 연결된 경우 AngularJS ng 옵션 문제가 발생했습니다.

DB에서이 목록을 사용하여 ng-option을 채 웁니다. 그러나 몇 가지 문제가 있습니다. 지금은 다음 목록을 사용하여 목록을 설정합니다.

<span> 
    <select style="width:25%" ng-options="champ1.cID as champ1.cName for champ1 in Champions1 | orderBy: 'cName'" ng-init="0" ng-model="champ1" ng-change="part3Valid()">{{champ1.cName}}</select> 
</span> 

여기에 문제

그것은 올바른 옵션의 이름으로 올바른 이미지를 표시에 문제가 발생, 내 기본 키 목록/고장 간격이 있기 때문에 내가 "생각"이다.

이미지로, 내 옵션 (변경시)은 다음과 같이 이미지를 업데이트한다는 것을 의미합니다.

Favorite Champions 
<!--SET UP LE CHAMPS--> 
<div> 
    <span><img ng-src="/Content/champions/{{Champions1[champ1].cName.trim() || 'None'}}_Square_0.png" style="width:15%" /></span> 
    <span><img ng-src="/Content/champions/{{Champions2[champ2].cName.trim() || 'None'}}_Square_0.png" style="width:15%" /></span> 
    <span><img ng-src="/Content/champions/{{Champions3[champ3].cName.trim() || 'None'}}_Square_0.png" style="width:15%" /></span> 
</div> 
<div> 
    <span><select style="width:25%" ng-options="champ1.cID as champ1.cName for champ1 in Champions1 | orderBy: 'cName'" ng-init="0" ng-model="champ1" ng-change="part3Valid()">{{champ1.cName}}</select></span> 
    <span><select style="width:25%" ng-options="champ2.cID as champ2.cName for champ2 in Champions2 | orderBy: 'cName'" ng-init="0" ng-model="champ2" ng-change="part3Valid()">{{champ2.cName}}</select></span> 
    <span><select style="width:25%" ng-options="champ3.cID as champ3.cName for champ3 in Champions3 | orderBy: 'cName'" ng-init="0" ng-model="champ3" ng-change="part3Valid()">{{champ3.cName}}</select></span> 
</div> 

그래서 내 옵션에서 이름의 실제 목록은 올바른 순서대로이지만, 이미지가 표시되는 첫 번째 옵션은 "Aaatrox"입니다 예를 들어, 일치하지 않는,하지만 Akali "에 대한 이미지를 보여줍니다 ". 따라서 내가 이미지를 업데이트 할 때 (Champions1[champ1].cName.trim()), 은 ng-src 설치 대 ng-option 설치과 다르게 정렬 된/구조화 된 목록을 얻고 있다고 생각하지만이 문제를 해결하는 방법을 모르거나 오정렬은 어디서 오는지.

다음은 내 API 호출 및 팩토리입니다 (가독성을 위해 함께 사용).

[HttpGet] 
public HttpResponseMessage GET() 
{ 

    using (MoviesEntities db = new MoviesEntities()) 
    { 
     var query = from champs in db.championLists 
        select new 
        { 
         cID = champs.ID, 
         cName = champs.Name, 
        }; 

     HttpResponseMessage msg = new HttpResponseMessage(); 
     msg.Content = new ObjectContent<object>(query.OrderBy(x => x.cName).ToList(), new System.Net.Http.Formatting.JsonMediaTypeFormatter()); 

     msg.StatusCode = HttpStatusCode.OK; 
     return msg; 
    } 
} 
    --------------------------------------- 

app.factory('championService', function ($http) { 
    var championService = {}; 
    championService.getResources = function() { 
     return $http({ 
      url: '/API/APIChampions', 
      method: "GET" 
     }) 
    } 
    return championService; 
}); 

나는 champ1/2/3과 같은 서비스를 설정했다.

여기 내 DB 목록입니다. 제 PKID가 약간의 틈을 가지고있어서 내 앱으로 호출 할 때 문제가 될 수 있다고 생각하십니까?

1 None            
2 Aatrox            
3 Ahri            
4 Akali            
5 Alistar           
6 Amumu            
7 Anivia            
8 Annie            
9 Ashe            
10 Blitzcrank           
11 Brand            
12 Braum            
13 Caitlyn           
14 Cassiopeia           
15 Chogath           
16 Corki            
17 Darius            
18 Diana            
19 Draven            
20 DrMundo           
21 Elise            
22 Evelynn           
23 Ezreal            
25 Fiora            
26 Fizz            
27 Galio            
28 Gangplank           
29 Garen            
30 Gragas            
31 Graves            
32 Hecarim           
33 Heimerdinger          
34 Irelia            
35 Janna            
36 JarvanIV           
37 Jax            
38 Jayce            
39 Jinx            
40 Karthus           
41 Katarina           
42 Kayle            
43 Kennen            
45 Leblanc           
46 LeeSin            
47 Leona            
48 Lissandra           
49 Lucian            
50 Lulu            
51 Lux            
52 Malphite           
53 Malzahar           
54 Maokai            
55 MasterYi           
56 MissFortune          
57 Mordekaiser          
58 Morgana           
59 Nami            
60 Nasus            
61 Nautilus           
62 Nidalee           
63 Nocturne           
64 Nunu            
65 Olaf            
66 Orianna           
67 Pantheon           
68 Poppy            
69 Quinn            
70 Rammus            
71 Renekton           
72 Rengar            
73 Riven            
74 Rumble            
75 Ryze            
76 Sejuani           
77 Shaco            
78 Shen            
79 Shyvana           
80 Singed            
81 Sion            
82 Sivir            
83 Skarner           
84 Sona            
85 Soraka            
86 Swain            
87 Syndra            
88 Talon            
89 Taric            
90 Teemo            
91 Thresh            
92 Tristana           
93 Trundle           
94 Tryndamere           
95 TwistedFate          
96 Twitch            
97 Udyr            
98 Urgot            
99 Varus            
100 Vayne            
101 Veigar            
102 Vi             
103 Viktor            
104 Vladimir           
105 Volibear           
106 Warwick           
108 Xerath            
109 XinZhao           
110 Yasuo            
111 Yorick            
112 Zac            
113 Zed            
114 Ziggs            
115 Zilean            
116 Zyra            
117 Karma            
118 Khazix            
119 Velkoz            
120 Gnar            
123 Kalista           
124 RekSai            
126 KogMaw            
128 Wukong            
1122 FiddleSticks 

여전히 새로운 API 호출 및 AngularJS와 그래서 난 문제를 파악에 어려움을 겪고 오전 (또한주의 새 이름은 내가 비록 다시 순서가 목록의 마지막에 추가된다).

답변

1

이렇게하면 : Champions1[champ1].cName.trim() 전달할 ID와 반드시 같지는 않은 챔피언스 배열의 위치에 액세스하고 있습니다. 다음

ng-options="champ1.cName for champ1 in Champions1 | orderBy: 'cName'" 

과 :

그러나이 같은 NG-옵션을 사용할 수 있습니다 다음

ng-options="champ1.cName as champ1.cName for champ1 in Champions1 | orderBy: 'cName'" 

그리고 :

<img ng-src="/Content/champions/{{champ1.cName.trim() || 'None'}}_Square_0.png" style="width:15%" /> 

을 또는 당신은 이름 만 필요한 경우

<img ng-src="/Content/champions/{{champ1.trim() || 'None'}}_Square_0.png" style="width:15%"/> 
+0

나는 당신을 사랑한다! 빠른 질문입니다. 공백 옵션 대신 "없음"(내 DB에 있음)을 평가하는 ng 옵션을 시작하는 방법이 있습니까? 전에는 0으로 설정했는데, PKID에는 None이 있지만, 이제는 재 배열 된 것입니다. None은 ng-option의 목록 중간에 없습니다. – Austin

+1

예,''을'select' 안에 추가 할 수 있습니다. –

+0

흠, 그것을 수정하지 않는 것 같습니다. 여전히 공백 (빈) 시작 옵션 – Austin