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から要素を削除/追加し、以前に初期化されたサードパーティのウィジェットを破損する可能性があります。あなたは 'visible'バインディングのためにそれを置き換えることができます。このバインディングでは要素が削除されません。 @Tomalakのコメントはまだ真であることに注意してください。すべてのウィジェットはカスタムバインディングハンドラで処理する必要があります。 – user3297291

関連する問題