【问题标题】:knockout bootstrap not on load淘汰赛引导程序未加载
【发布时间】:2016-11-21 21:09:13
【问题描述】:

我有一个基于 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" />

【问题讨论】:

  • 你能告诉我们你的那部分代码吗?一般答案:设置点击可见性?

标签: knockout.js bootstrap-multiselect bootstrap-tags-input


【解决方案1】:

state 必须是一个 observable (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>

【讨论】:

  • 我在编辑模式下看到所有其他内容,文本输入也出现了,但它没有格式,并且不起作用。
  • 如果您的文本输入字段有某种编辑库,您必须为该库编写custom binding handler
  • if 绑定从 DOM 中删除/添加元素,可能会破坏任何先前初始化的第三方小部件。您可以尝试将其替换为 visible 绑定。此绑定不会删除元素,这可能更适合您。请注意,@Tomalak 的评论仍然正确:任何小部件都应通过自定义绑定处理程序进行处理。
  • 另外,如果你只有两个状态,那么如果你使用一个名为 editEnabled 的 observable 包含 truefalse 会更简单、更合乎逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 2015-02-28
相关资源
最近更新 更多