2013-05-09 1 views
2

그래서 내가 사용 KnockoutJS 모든 것을 제외하고 ... 좋은 작품 ...에 대한 추천 사이트에 대한 옵션이 있습니다업데이트 KnockoutJS) 단일 페이지 응용 프로그램에서 <a href="http://knockoutjs.com/documentation/plugins-mapping.html" rel="nofollow">KO Mapping Plugin</a>와

몇 개의 값을 쿼리 문자열에 보내 몇 개의 텍스트 상자를 채울 수 있습니다. 쿼리 문자열을 구문 분석하고 jQuery val()을 사용하여 KO 바운드 텍스트 상자 값을 채우는 JS 함수가 있습니다. 그러나 값은 설정되지 않습니다. 나는 KO의 값을 설정하는 동일한 코드를 사용 : 여기

<input id="jobTitle" type="text" data-bind="value: JobTitle" /> 

<input id="hiddenJobTitle" type="hidden" data-bind="value: JobTitle" /> 

흥미로운 노트 내가 노력하고있어 몇 가지 의사 코드 ...

var jobTitle = "Ninja"; 

$("#jobTitle").val(jobTitle); // doesn't work 

$("#jobTitle").val(jobTitle).change(); // doesn't work 

$("#hiddenJobTitle").val(jobTitle); // works 

마크 업입니다 바운드 숨겨진 필드 및 잘 작동합니다.

+2

그냥 궁금해서 당신은 단지 값을 설정하기 위해'ko.observable()'구문을 사용할 수 있습니다 중요하지 않습니다

이상적으로 내가 뭔가를 원하십니까? ko의 내부 구조를 다루는'val()'문제 일뿐입니다. 그냥 생각. – Nomad101

+0

뷰 모델에서 쿼리 문자열 값을 확인하지만 작동하지 않는 계산 된 관찰 가능 속성으로 속성을 설정해 보았습니다. 하지만 그것은 KO 매핑 –

+0

을 사용하여 설정하는 방법과 관련하여 문제가 될 수 있습니다. 또한 참고로 html 태그에서 데이터 바인딩 구문을 제거하면 값이 올바르게 설정됩니다. 그래서 그것은 분명히 가치의 내 점점/설정보다 녹아웃에 뭔가가있어. –

답변

0

$("#jobTitle").val(jobTitle)에서 작동하지 않는 이유는 실제로 jobTitle 인 녹아웃 데이터 바인딩이 기능이기 때문입니다. 코드에서 그 시점을 조사하여 어떤 직종이 반환되는지 확인한다면 그것이 기능이라는 것을 알 수 있습니다. 녹아웃 값의 반환을 얻으려면 $("#jobTitle").val(jobTitle());

을 사용해야합니다.

+0

jobTitle은 단순히 쿼리 문자열 값으로 설정 한 문자열 변수입니다. –

+0

위의 코드가 의사 코드라는 사실을 알기 때문에 실제 사례에서는 문자열이 아닐 것이라고 가정하고있었습니다. 그것이 KO 객체를 가로 질러 오거나 KO 객체에 할당 되었다면 위의 내용은 여전히 ​​유효합니다. – zmanc

0

이것은 KnockoutJS의 문제가 아니며 스크립트와 호출 함수를로드하는 시퀀스입니다.

KO가 바인딩 된보기 모델이 인스턴스화되기 전에 문서의 쿼리 문자열을 통해 텍스트 상자의 값을 설정하려고했습니다.

그래서 parse/set 스크립트에서 새 함수를 만들고 뷰 모델을 만들고이를 KO에 바인딩 한 후 호출합니다.

이상적으로는 녹아웃 바인딩을 감시하기 위해 이벤트 처리기/콜백을 작성한 것이지만 knockout이 이와 같은 이벤트 콜백을 지원하는지는 알 수 없습니다. 그들이하는 경우 - 알려 주시기 바랍니다. 이 때문에 순서가

ko.on("bind", function(viewModel) { 
// this runs after knockout binds a view model 
});