Как добавить URL к ng-repeat, если не указано в объекте JSON

0

У меня есть объект 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"
  • 0
    Есть ли вероятность, что вы получите строку http:// в вашем ключе LinkUrl когда это имя файла?
  • 0
    он будет либо возвращаться, как указано выше, либо как otherstore.com/stores/files/xxx.pdf с http: //

3 ответа

0
<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;
}
0

Вы можете сделать что-то вроде

<a href="{{'http://' in obj.LinkUrl ? obj.LinkUrl : baseUrl + obj.LinkUrl}}" >{{obj.GroupName}}</a>
0

Вы можете использовать регулярное выражение для проверки того, является ли это поле 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
}
  • 0
    Над логикой, можно добавить сразу после извлечения данных, и вам не нужно прикасаться к ng-repeat для этого (я предполагаю, что вы открыты для других вариантов, кроме обработки в ng-repeat).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню