我依靠这里的答案How to check contain in knockout,但它似乎是一个过时的Knockout版本。我正在尝试做类似的事情:
<li>
<span data-bind="text: Subject"></span>
<!-- ko if: Subject.contains('Important') -->
<i class="fa fa-exclamation-triangle"></i>
<!-- /ko -->
</li>
如果该主题文本包含单词“重要”,则将fontawesome图标附加到ko主题文本。然而,这不起作用('包含'不是一个函数),我正在努力寻找一个“最新”的解决方案。
答案 0 :(得分:1)
如果您希望有一个contains
方法用于观察,您可以add it as a custom function。或者您可以将其添加到vm.Subject
,或者您可以将其内联为Matt建议。
ko.observable.fn.contains = function (str) {
return this().indexOf(str) > -1;
};
vm = {
Subject: ko.observable('This is Important')
};
ko.applyBindings(vm);
setTimeout(() => vm.Subject('This is not'), 1500);
&#13;
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<span data-bind="text: Subject"></span>
<!-- ko if: Subject.contains('Important') -->
<i class="fa fa-exclamation-triangle"></i>
<!-- /ko -->
&#13;
答案 1 :(得分:1)
这就是我最终的结果:
<li>
<span data-bind="text: Subject"></span>
<!-- ko if: Subject().indexOf('Important') !== -1 -->
<i class="fa fa-exclamation-triangle"></i>
<!-- /ko -->
</li>
它有效!谢谢,Matt.kaaj。如果这是我在多个地方做的事情,我认为Roy的方式是可行的,但由于我只是在网站上检查一次关键字的字符串,所以我采用了简单的内联解决方案。谢谢你们两个!