2014-04-25 4 views
0

드롭 다운에 대한 초기 선택을 바인딩하는 데 문제가있는 경우 "optionValue"를 지정하면 모두 문제가 없지만이 옵션을 지정하면 선택 사항을 변경 한 후에는 원하는 전체 객체를 다음과 같이 반환합니다. http://jsfiddle.net/Princa/tuMta/109/Knockout.js 드롭 다운 바인드가 선택됨

'optionValue'를 지정하지 않고 어떻게 초기 값을 바인딩해야합니까? 나는

selectedCountry: ko.observable(new Country("Sweden", 29000000)), 

을 설정 그러나 당신이 그것을 알려 그래서, JS는 것을 모르는 문제는 사용자가 만든 심지어 2 clases는 스웨덴 있다는 것입니다

+0

내 대답을 업데이트, 놀아 날이 작동 –

답변

2

optionValue 설정은 어떤 항목이 선택되지 않은 경우 선택 목록에 표시되는 "자리"값입니다.

실제로 선택 항목을 목록의 항목으로 지정하려면 selectedCountry 변수를 유효한 값으로 설정하여보기 모델 자체에서 선택하십시오. 당신의 jsfiddle에서

예 (여기 업데이트 : http://jsfiddle.net/tuMta/110/를)

viewModel.selectedCountry(viewModel.availableCountries()[1]); 
+0

굉장! 나는 두 대상이 "동일하지 않다"는 것을 깨닫지 못했다. 이런 종류의 문서를 어디에서 찾을 수 있습니까?! – Princa

+0

그건 좋은 질문이야 .... 당신을 가리킬 수있는 가장 좋은 곳이 어디 있는지 모르겠다 ...이 문서는 그것을 설명하는 데 도움이 될 수 있습니다 : http://stamat.wordpress.com/2013/06/22/javascript-object-comparison /. 일반적으로 객체는 메모리의 동일한 위치를 차지하는 경우에만 동등한 것으로 간주됩니다. 따라서 동일한 내용을 포함하고 있어도 독립적으로 생성 된 두 객체는 ​​항상 별도의 객체입니다. –

+0

두 개의 분리 된 '국가'개체를 만들고 하나의 이름을 수정하면 다른 개체는 수정되지 않습니다. 이는 해당 개체가 고유 한 개체임을 나타냅니다. –

1

를 작동하지 않았다. 이 방법을 시도해보십시오

var viewModel = function() { 
var defaultSelected = new Country("Sweden", 29000000); 
this.availableCountries = ko.observableArray([ 
    new Country("UK", 65000000), 
    new Country("USA", 320000000), 
    defaultSelected]); 
this.selectedCountry= ko.observable(defaultSelected); 
}; 

http://jsfiddle.net/tuMta/120/

+1

@JosephGabriel 내 나쁜, 진짜 문제는 2 개의 다른 개체, 새로운 conty ('스웨덴이 있다는 것입니다 ')는 새로운 나라 ('스웨덴 ')와 다르다. 나쁜 업데이트 –

관련 문제