Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Angular将json对象中的通用文本字符串转换为有效url_Javascript_Angularjs_Json - Fatal编程技术网

Javascript 使用Angular将json对象中的通用文本字符串转换为有效url

Javascript 使用Angular将json对象中的通用文本字符串转换为有效url,javascript,angularjs,json,Javascript,Angularjs,Json,这是我的第一个堆栈溢出问题,所以请耐心听我说(我几乎总是找到我需要的东西,或者自己想出来,但这次不同了,因为我只是被角状物弄湿了脚) 我有一个指令,从json对象获取名称和url,并使用名称和href构建html。问题是,url对象的json响应是用户从CMS输入的常规文本字符串,并且当前未在后端进行验证。因此,URL可以看起来像www.blah.xxx等等。有没有一种不使用插件的方法,可以让输出检查url是否有http://并且如果没有,则添加它?还是有一个好的插件可以很容易地完成这个任务 a

这是我的第一个堆栈溢出问题,所以请耐心听我说(我几乎总是找到我需要的东西,或者自己想出来,但这次不同了,因为我只是被角状物弄湿了脚)

我有一个指令,从json对象获取名称和url,并使用名称和href构建html。问题是,url对象的json响应是用户从CMS输入的常规文本字符串,并且当前未在后端进行验证。因此,URL可以看起来像www.blah.xxx等等。有没有一种不使用插件的方法,可以让输出检查url是否有http://并且如果没有,则添加它?还是有一个好的插件可以很容易地完成这个任务

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中是否存在
://
,就相对安全了。是的,这确实解决了我的问题。非常感谢。我进行了一次快速编辑,使其更具普遍性,因为问题最终出现在整个站点,而不仅仅是在该指令范围内。