2017-09-08 6 views
0

가치를하는 동안 빈 문자열을 반환하는 그래서 내가있어 말을하자 data-bind :KnockoutJS Databinds 호출 반환이

<p data-bind="text: toClicked.title">This should be replaced.</p> 

내가있어 내 ko.observable() : 다음 기반 채워지

toClicked : ko.observable({}) 

다른 배열 세트를 클릭하면 다음과 비슷한 데이터가 표시됩니다.

markers : ko.observableArray([ 
    { title: 'Title', lat: 10, lng: -10, content: 'This is the relevant content' }, 
    // more objects in array 
]) 

콘솔에서 observable을 toClicked().title과 같이 호출하면 Title을 반환합니다. 우리가 아무것도 단락 안의 텍스트를 덮어, 위의 데이터 바인딩 내부

Object { title: "Title", lat: 10, lng: -10, content: "This is the relevant content" }

을하지만 : 나는 단순히 toClicked();를 호출하면, 나는 다음과 같은 응답을 얻을.

바인딩이 제대로되어 있는지 확인하기 위해 누락 된 것이 있습니까? 다른 모든 observables/observableArrays는 문제없이 작동하므로 바인딩이 정보를 처리하는 방법과 관련이 있습니다. 어떤 생각이나 아이디어라도 대단히 감사하겠습니다!

보조 노트로 $root.toClicked.title$parent.toClicked.title을 사용해 보았습니다. 기쁨이 없습니다.

답변

0

당신은 자신의 질문에 답변했습니다. 콘솔에서는 toClicked().title을 사용했지만 마크 업에서는 data-bind="text: toClicked.title"을 사용했습니다. 일반 관측 가능을 사용할 때 괄호를 끈 상태로 둘 수 있지만 표현식이면 괄호가 필요합니다. this answer도 참조하십시오.

은 조각 아래의 차이를 보여 data-bind="text: toClicked().title"

마십시오.

vm = { 
 
    toClicked: ko.observable({}), 
 
    markers: ko.observableArray([{ 
 
    title: 'Title', 
 
    lat: 10, 
 
    lng: -10, 
 
    content: 'This is the relevant content' 
 
    }]), 
 
    setClicked: function() { 
 
    vm.toClicked(vm.markers()[0]); 
 
    } 
 
}; 
 

 
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> 
 
<div>First: <p data-bind="text: toClicked.title">This should be replaced.</p></div> 
 
<div>Second: <p data-bind="text: toClicked().title">This should be replaced.</p></div> 
 
<button data-bind="click:setClicked">Set it</button>

+0

knockoutJS으로, 당신은 관찰 IIRC를 호출하기 위해 괄호를 추가 할 필요가 없습니다. 팸플릿에 추가되었으며 여전히 동일한 결과를 얻고 있습니다. – IkeDoud

+0

내용을보고 싶다면 괄호를 추가해야합니다. –

+1

답변에 스 니펫을 추가했습니다. 어쩌면 그것이 옳지 않은 것을 찾아내는 데 도움이 될 것입니다. –