0

knockout.js 기반 사이트가 있습니다. 여러 개의 select 요소가 태그 입력 필드에 있습니다. 로드시 표시되는 모든 항목이 정상적으로 작동합니다. 하지만 사용자가 버튼을 클릭하는 경우에만 표시하고 싶습니다.녹아웃 부트 스트랩이 없습니다.

어떻게하면됩니까?

감사

<!-- ko if: state=="EDIT" --> 
//the default state is not that. Here should appear the tagsinput, but if it's here, don't works 
<!-- /ko --> 
<input id="domains" type="text" value="" data-role="tagsinput" placeholder="Add tags" /> 
+0

당신이 우리 코드의 일부 보여줄 수 있습니까? 일반적인 대답 : 클릭시 가시성을 설정 하시겠습니까? – Ivozor

답변

1

state은 관찰 (ko.observable())해야합니다, 당신은 전화에 그것의 가치 얻을 필요가 : if: state() === 'EDIT'합니다.

예 :

ko.applyBindings({ 
 
    state: ko.observable("DEFAULT") 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<!-- ko if: state() === "EDIT" --> 
 
<h1> Edit section </h1> 
 
<!-- /ko --> 
 

 
<!-- ko if: state() === "DEFAULT" --> 
 
<h1> Default section </h1> 
 
<!-- /ko --> 
 

 
<button data-bind="click: state.bind(null, 'EDIT')">Edit</button> 
 
<button data-bind="click: state.bind(null, 'DEFAULT')">Default</button>

+0

편집 모드에서 다른 모든 것을 볼 수 있지만 textinput도 나타납니다. 그러나 형식이 지정되어 있지 않아 작동하지 않습니다. – 92mate

+1

텍스트 입력 필드에 일종의 편집 라이브러리가 있으면 해당 라이브러리에 [사용자 정의 바인딩 핸들러] (http://knockoutjs.com/documentation/custom-bindings.html)를 작성해야합니다. – Tomalak

+1

'if' 바인딩은 DOM에서 요소를 제거/추가함으로써 이전에 초기화 된 제 3 자 위젯을 파괴 할 수 있습니다. 'visible' 바인딩을 위해 그것을 대체하려고 할 수 있습니다. 이 바인딩은 요소를 제거하지 않으므로 더 잘 맞을 수 있습니다. @Tomalak의 의견은 여전히 ​​사실입니다. 모든 위젯은 사용자 정의 바인딩 핸들러를 통해 처리해야합니다. – user3297291