Javascript 使用Angular将json对象中的通用文本字符串转换为有效url
这是我的第一个堆栈溢出问题,所以请耐心听我说(我几乎总是找到我需要的东西,或者自己想出来,但这次不同了,因为我只是被角状物弄湿了脚) 我有一个指令,从json对象获取名称和url,并使用名称和href构建html。问题是,url对象的json响应是用户从CMS输入的常规文本字符串,并且当前未在后端进行验证。因此,URL可以看起来像www.blah.xxx等等。有没有一种不使用插件的方法,可以让输出检查url是否有http://并且如果没有,则添加它?还是有一个好的插件可以很容易地完成这个任务Javascript 使用Angular将json对象中的通用文本字符串转换为有效url,javascript,angularjs,json,Javascript,Angularjs,Json,这是我的第一个堆栈溢出问题,所以请耐心听我说(我几乎总是找到我需要的东西,或者自己想出来,但这次不同了,因为我只是被角状物弄湿了脚) 我有一个指令,从json对象获取名称和url,并使用名称和href构建html。问题是,url对象的json响应是用户从CMS输入的常规文本字符串,并且当前未在后端进行验证。因此,URL可以看起来像www.blah.xxx等等。有没有一种不使用插件的方法,可以让输出检查url是否有http://并且如果没有,则添加它?还是有一个好的插件可以很容易地完成这个任务 a
angular.module('pwrApp')
.directive("getPrimaryCareProviderName", [function() {
return {
restrict: "A",
link: function(scope, elem, attrs) {
scope.$watch('primaryCareProvider', function() {
var output = "";
if(scope.primaryCareProvider.site == "" || scope.primaryCareProvider.site ===null){
output = scope.primaryCareProvider.name;
}else{
output = '<a href="'+scope.primaryCareProvider.url+'" target="_BLANK">'+scope.primaryCareProvider.name+"</a>";
}
elem.html(output);
});
}
}
}]);
angular.module('pwrApp')
.directive(“getPrimaryCareProviderName”,[function(){
返回{
限制:“A”,
链接:功能(范围、要素、属性){
作用域.$watch('primaryCareProvider',函数(){
var输出=”;
if(scope.primaryCareProvider.site==“”| | scope.primaryCareProvider.site==null){
输出=scope.primaryCareProvider.name;
}否则{
输出='”;
}
html(输出);
});
}
}
}]);
您只需每次检查url开头是否包含http:
if(scope.primaryCareProvider.site==“”| | scope.primaryCareProvider.site==null){
输出=scope.primaryCareProvider.name;
}
否则{
var url=scope.primaryCareProvider.url
if(url.indexOf(“http:/”))=0{
url=“http://”+url;
}
输出='';
}
但是如果您想要更复杂的方法,请选中此签出正则表达式。您可以测试此正则表达式,并在需要时添加“http://”。IMO不需要为此导入插件(以及开销)。$compile(output);看一看文档:我认为您只需使用
indexOf()
检查url中是否存在://
,就相对安全了。是的,这确实解决了我的问题。非常感谢。我进行了一次快速编辑,使其更具普遍性,因为问题最终出现在整个站点,而不仅仅是在该指令范围内。