Javascript 在数组项中检测Mailto vs Http/Https,并在“新建”选项卡中打开Http URL

Javascript 在数组项中检测Mailto vs Http/Https,并在“新建”选项卡中打开Http URL,javascript,jquery,arrays,knockout.js,Javascript,Jquery,Arrays,Knockout.js,我在ko.js中有以下视图模型:(使用Helplink数组) //Html标记 <a href="#" data-bind="visible: chosenHelpLink, text: chosenHelpLink().linkText, attr: { href: chosenHelpLink().url }" style="display: none;" class="primary"></

我在ko.js中有以下视图模型:(使用Helplink数组)

//Html标记

 <a href="#" data-bind="visible: chosenHelpLink,
                    text: chosenHelpLink().linkText,
                    attr: { href: chosenHelpLink().url }" style="display: none;" class="primary"></a>
不幸的是,我根本无法让函数工作。
提前感谢您。

使用计算好的、简单的单独绑定怎么样

这里有一个简短的演示,希望能解释一下

函数帮助链接(url、文本){
var self=这个;
self.url=ko.observable(url);
self.text=ko.可观察(text);
self.https=ko.computed(函数(){
if(url.match(/^https/)返回true;
否则返回false;
})
}
函数ViewModel(){
self.helpLinks=ko.observearray();
self.helpLinks.push(新建HelpLink('http://yyy.com“,“错误消息/我的访问权限不适用于…”);
self.helpLinks.push(新建帮助链接(“mailto:xxx@xx.com“,”联系研究“,”身份证申请/我需要一个身份证…”);
self.helpLinks.push(新建帮助链接(“https://yyyyy.ggg.com“,”去帮助我表格“,”帮助我请求/请给我发送关于…)的研究报告“);
self.helpLinks.push(新建帮助链接(“mailto:xxx@xx.com“,”联系研究中心“,”培训请求“);
}
应用绑定(新的ViewModel())



使用一个计算好的单独绑定怎么样

这里有一个简短的演示,希望能解释一下

函数帮助链接(url、文本){
var self=这个;
self.url=ko.observable(url);
self.text=ko.可观察(text);
self.https=ko.computed(函数(){
if(url.match(/^https/)返回true;
否则返回false;
})
}
函数ViewModel(){
self.helpLinks=ko.observearray();
self.helpLinks.push(新建HelpLink('http://yyy.com“,“错误消息/我的访问权限不适用于…”);
self.helpLinks.push(新建帮助链接(“mailto:xxx@xx.com“,”联系研究“,”身份证申请/我需要一个身份证…”);
self.helpLinks.push(新建帮助链接(“https://yyyyy.ggg.com“,”去帮助我表格“,”帮助我请求/请给我发送关于…)的研究报告“);
self.helpLinks.push(新建帮助链接(“mailto:xxx@xx.com“,”联系研究中心“,”培训请求“);
}
应用绑定(新的ViewModel())



无法修改html标记,因此在这种情况下,计算函数没有帮助。我的想法更像是瞄准数组中的第一个或第二个元素(我可以相应地排列它们),并强制在新选项卡中打开该特定元素,而不是按http@RazvanIrimie我已经更新了我的答案。您可以不编辑html,但绑定确实需要更新。无法修改html标记,因此在这种情况下,计算函数没有帮助。我的想法更像是瞄准数组中的第一个或第二个元素(我可以相应地排列它们),并强制在新选项卡中打开该特定元素,而不是按http@RazvanIrimie我已经更新了我的答案。您可以不编辑html,但绑定确实需要更新。不幸的是,您提供的更改在我的情况下不起作用,因为html标记需要保持不变(选项显示为下拉菜单,因此无法添加div)。我还在呈现中附加了一个图像:不幸的是,您提供的更改在我的示例中不起作用,因为HTML标记需要保持不变(选项显示为下拉菜单,因此无法添加div)。我还在渲染上附加了一个图像:
 <a href="#" data-bind="visible: chosenHelpLink,
                    text: chosenHelpLink().linkText,
                    attr: { href: chosenHelpLink().url }" style="display: none;" class="primary"></a>
 if (window.location.protocol(HelpLink) == "http:") {
        window.open ... 
    }