2012-12-29 5 views
1

저는 정말 간단한 질문을하지만, 제가 빠진 것을 이해하지 못합니다. jsfiddle에KnockoutJS 속성 값을 얻으십시오

$(document).ready(function() { 
var viewModel = { 
    test: ko.observable(null) 
} 
var obj = { 
    name: "name123" 
} 
viewModel.test(obj);  
ko.applyBindings(viewModel.test, document.getElementById("a")); 
alert(viewModel.test.name()); 
});​ 

링크 : 여기 는 코드 내가 이름 속성 값을 얻을 수없는 이유 http://jsfiddle.net/bwkAB/ ?

UPDATE : 그것은 당신이 아이를 만들 필요가, viewModel.test()가 여기에

+0

바이올린은 잘 작동하는 것 같습니다 ... 또는 ...? –

+0

알림이 나와 작동하지 않습니다. "TypeError : viewModel.test.name은 함수가 아닙니다." – d1mitar

+0

@WernerVestera user1025981이 자식 객체의 속성을 관찰 가능하게 만들지 않았기 때문에 경고가 작동하지 않았지만 'name'멤버를 메서드로 호출했습니다. 예기치 않게 이름에 괄호가없는 – Gent

답변

2

이름을 수정 jsfiddle하다 그것을 결합하기 위해 관찰 속성을 객체한다.. HTML의 범위에 도움이되는 바인딩을 추가하는 것뿐만 아니라

$(document).ready(function() { 
    var viewModel = { 
     test: ko.observable(null) 
    } 
    var obj = { 
     name: ko.observable("name123") 
    } 
    viewModel.test(obj);  
    ko.applyBindings(viewModel); 
    alert(viewModel.test().name()); 
});​ 
+0

을 관찰 할 수있는 것처럼 보입니다. 고맙습니다. – d1mitar

+0

@ user1025981 정보를 단순화하는 방법에 대한 좋은 예를 들어 새 jsfiddle을 확인하십시오. 괄호를 없애고 관찰 가능 대신 정적으로 속성을 남기는 것은 옵션이지만 새로운 예제를 선호 할 것이라고 생각합니다. 또한 HTML ' with : 'binding – Gent

+0

나는 이해하지만 상황은 다음과 같다. 나는 아약스 요청을하고 객체 배열을 얻는다. 이 배열을 사용하여 모바일 응용 프로그램에서 listview를 만듭니다. 목록 항목에 대한 클릭 이벤트를 연결하고 목록 항목을 클릭하면 개체 - selectedItem에 저장하고 세부 정보보기 페이지로 전환합니다. 그런 다음이 선택된 항목의 세부 정보 페이지를 바인딩합니다. 그러나 요청 된 항목에 따라 선택한 항목의 속성을 관찰 할 수 없습니다. 이러한 속성에 대해 수행 할 수있는 작업이 있습니까? – d1mitar

관련 문제