У меня есть объект JSON, возвращающийся из вызова httpq. Одним из свойств является LinkUrl. Иногда это будет иметь предопределенный URL-адрес, который исходит из возвращаемого объекта, в противном случае у него просто будет имя файла, в котором мне нужно будет добавить базовый url к началу этого имени файла.
Не уверен, есть ли более угловой способ сделать это, или если это должно быть выражением regex if.
Ниже у меня есть возвращенный LinkUrl, который является только файлом. Если URL-адрес отсутствует, мне нужно добавить URL-адрес файла, где он будет размещен, поэтому он выводит http://mycorp.com/stores/files/store11_OKC_Docs.pdf на мой взгляд.
Любая помощь оценивается.
0: Object
$$hashKey: "00B"
GroupId: "1"
GroupName: "Store # 11 - OKC"
LanguageName: "English"
LinkTypeAbbr: "Store_Docs"
LinkTypeDescr: "Store Documents"
LinkTypeId: "1"
LinkUrl: "store11_OKC_Docs.pdf"
<a href="{{chckeURL(obj.LinkUrl)}}">file</a>
$scope.chckeURL = function(url){
/*Check here this is only a file name or full URL.
using HTTP is present in the string or not.
generate final url and return it
*/
return finalURL;
}
Вы можете сделать что-то вроде
<a href="{{'http://' in obj.LinkUrl ? obj.LinkUrl : baseUrl + obj.LinkUrl}}" >{{obj.GroupName}}</a>
Вы можете использовать регулярное выражение для проверки того, является ли это поле URL-адресом или нет. Вы можете найти ответ для этого здесь >> qaru.site/questions/70516/... (общий код ниже)
function ValidURL(str) {
var pattern = new RegExp('^(https?:\/\/)?'+ // protocol
'((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|'+ // domain name
'((\d{1,3}\.){3}\d{1,3}))'+ // OR ip (v4) address
'(\:\d+)?(\/[-a-z\d%_.~+]*)*'+ // port and path
'(\?[;&a-z\d%_.~+=-]*)?'+ // query string
'(\#[-a-z\d_]*)?$','i'); // fragment locater
if(!pattern.test(str)) {
alert("Please enter a valid URL.");
return false;
} else {
return true;
}
}
if (!ValidURL(yourObject.LinkUrl)) {
yourObject.LinkUrl = yourAddress + yourObject.LinkUrl
}
http://
в вашем ключеLinkUrl
когда это имя файла?