0

我有一個基於knockout.js的網站。 我有一個標籤輸入提交了一個多選擇元素。 所有工作正常,如果他們顯示在加載。 但是我想在用戶點擊一個按鈕時顯示它們。淘汰賽引導不上載

我該怎麼做?

感謝

<!-- 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

我在編輯模式下看到所有其他的東西,文本輸入也會出現,但它沒有格式,並且不起作用。 – 92mate

+1

如果您的文本輸入字段有某種編輯庫,您必須爲該庫編寫[自定義綁定處理程序](http://knockoutjs.com/documentation/custom-bindings.html)。 – Tomalak

+1

'if'綁定從DOM中刪除/添加元素,可能會破壞以前初始化的第三方小部件。您可以嘗試將其替換爲「可見」綁定。此綁定不會刪除可能更適合您的元素。請注意@Tomalak的評論仍然是正確的:任何小部件都應該通過自定義綁定處理程序進行處理。 – user3297291