2014-12-01 2 views
0

Knockout을 사용하여 드롭 다운 메뉴의 선택된 텍스트를 가져 오려고하지만 문제는 value 바인딩과 함께 반환되는 값이 숫자 옵션 인 리터럴 value=""입니다 (isn . 내가 addedUserId는 문자 그대로 할knockout을 사용하여 선택한 선택 드롭 다운의 값이 주어지면 선택한 선택 드롭 다운의 텍스트를 반환 하시겠습니까?

<select data-bind="options: siteUsers, optionsText: 'UserName', optionsValue: 'UserId', optionsCaption: 'Select...', value: addedUserId"></select> 

't 나는 (텍스트에 저장) 이름이 아닌 ID를 표시하기 위해 노력하고있어 고려 매우 유용 예를 들어

, 여기 내 DOM 구조입니다 옵션의 텍스트 (예 : UserName이 아닌 UserId). 이것을 가져올 수있는 방법은 무엇입니까?

계산 된 값을 사용해야합니까? 그렇다면 어떻게 그러한 기능을 구현할 것인가?

답변

0

optionsValue를 'UserName'으로 변경하십시오.

<select data-bind="options: siteUsers, optionsText: 'UserName', optionsValue: 'UserName', optionsCaption: 'Select...', value: addedUserId"></select> 

그렇지 않으면 ID를 사용하여 옵션을 반복하고 선택한 이름을 찾을 수 있습니다.

+0

데이터베이스와 상호 작용해야하는 경우 나중에 'UserId'가 필요합니다. 루핑을 설명해 주시겠습니까? – ReactingToAngularVues

+0

siteUsers 컬렉션에서 $ .each 루프를 수행하고 각 패스에서 선택한 값에 대한 UserID를 확인합니다. 일치하는 경우 반복시 UserName을 반환합니다. – MatthewCook0485

0

질문을 올바르게 이해했다면 드롭 다운 메뉴에서 무언가를 선택할 때 SelectedText과 같은 것이 필요합니다.

음이 경우 당신은 addedUserId

self.optionstext=ko.observable(); 
self.addedUserId.subscribe(function(selVal){ //selVal is alias of `optionsValue` 

//if needed check undefined condition further 
var data = ko.utils.arrayFirst(self.siteUsers(),function(item){ 
      if(selVal === item.UserId()) 
      {return true;} else {return false;} 
     }); 

if(data != []) 
self.optionstext(data[0].UserName()); 

}); 

당신은뿐만 아니라 computed를 사용하지만 구독 할 수 있습니다 성능에 가장 적합하다 바인딩 value에 가입해야합니다.

관련 문제