使用Knockout.js,如果该网址与当前网站的网址不匹配,我试图显示一个外部图标-绑定

问题描述

我正在使用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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...