问题描述
我正在使用Knockout.js,遇到一个问题,我需要告诉网站搜索结果是外部链接还是内部链接。现在,它们都显示为外部链接,因为每个都有一个显示结果,并在每个搜索结果上显示图标。我已经硬编码了一个解决方案,但是我需要一个通用解决方案,因为它将在多个站点上使用。我需要绑定到标记,并告诉它仅在URL匹配站点URL时显示,而无需硬编码。我当时在考虑使用变量,但是我对开发尚不陌生,因此不确定在这种情况下如何进行操作或语法看起来如何。这是我的foreach块的内容:
<ul class="search-results" data-bind="foreach: results">
<li>
<a data-bind=" attr: { href: $data.url }" title="View Details">
<h4>
<b data-bind="html: $data.title"></b>
</h4>
<p data-bind="text: $data.description"></p>
**<i data-bind="visible: url.indexOf('example.com/') === -1" class="fa fa-
fw fa-external-link"></i>**
</a>
</li>
</ul>
编辑: 找到了对我有用的解决方案!创建了一个变量并将其绑定到我的html文件中的i标签。
self.isExternal = function (url){
var domain = function(url) {
return url.replace('http://','').replace('https://','').split('/')[0];
};
return domain(location.href) !== domain(url);
};
数据绑定以检查i标签上的可见性。
<i data-bind="visible: $data.externalIcon" class="fa fa-fw fa-external-link"></i>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)