击倒“;如果viewModel属性包含'一些文本'&”;
Knockout "If viewModel property contains 'some text'"
我在这里依赖的答案是如何在knockout中检查包含,但它似乎是针对knockout的过时版本。我正在尝试做一些类似的事情:
<li>
<span data-bind="text: Subject"></span>
<!-- ko if: Subject.contains('Important') -->
<i class="fa fa-exclamation-triangle"></i>
<!-- /ko -->
</li>
如果主题文本包含单词"重要",则在ko主题文本后附加font真棒图标。然而,这不起作用("联系人"不是一个函数),我正在努力寻找一个"最新"的解决方案。
如果您希望有一个可观察性的contains
方法,您可以将其添加为自定义函数。或者您可以将它添加到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);
<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 -->
这就是我最终得到的:
<li>
<span data-bind="text: Subject"></span>
<!-- ko if: Subject().indexOf('Important') !== -1 -->
<i class="fa fa-exclamation-triangle"></i>
<!-- /ko -->
</li>
它起作用了!谢谢,Matt.kaaj。如果我在多个地方做这件事,我认为罗伊的方式是可行的,但由于我只在网站上检查过一次关键字字符串,所以我选择了直接的内联解决方案。谢谢你们两个!
相关文章:
- 无法将包含文本和图像的SVG保存到画布
- 存储包含html标记的文本
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- 如果Div包含精确文本,则添加类
- 检查选择器在jQuery中是否包含文本(即不是媒体)
- 使用 jQuery 检查文本可见性 .包含代码的行为不符合预期
- jQuery 隐藏按钮,如果它们不包含文本
- 当文本框中包含数据时禁用按钮
- 过滤包含一些文本的 PHP 数据表
- 创建包含文本内容的新 Google 云端硬盘文件 (javascript)
- 使用 javascript 检查元素是否包含子标记而不是文本
- 将包含 javascript 的文本绑定到模板中的 innerHTML
- 如果单元格中的文本包含特定单词,则在其中放入图像
- 选择框文本等于而不是选择框文本包含-jQuery
- JavaScript-当整个文本包含时替换
- 如果文本包含“@”,请更改“@”的颜色
- 替换链接和文本,如果文本包含:
- Magento翻译的文本包含在Javascript文件
- jQuery slideDown()在文本包含<和>时不工作
- 按属性值和文本包含隐藏元素