2015-10-22 3 views
1

У меня есть сайт с огромным списком из 30 статей. До сих пор это было как 300 строк кода HTML, а с угловыми значениями теперь это похоже на 10 строк. Но некоторые из этих статей являются особенными, поэтому мне нужно быть более конкретными, что показывать. Вот HTML код:ng-repeat с if-statement в Angular

<div id="illustratorcontent" ng-repeat="illustrator in illustrators"> 
     <article id="illustratorcontent{{illustrator.ID}}"> 
      <header> 
       <h3>{{illustrator.name}}</h3> 
      </header> 
      <div class="illustratorcontentext"> 
       <p>This work is copyrighted and owned by {{illustrator.name}}...</p> 
       <p>Details of the copyright holder: </p> 
       <ul class="listplacing"> 
        <li>Name: {{illustrator.name}}</li> 
        <li>Website: <a href="{{illustrator.website}}">{{illustrator.name}}'s website</a></li> 
        <li>Website: <a href="{{illustrator.website2url}}">{{illustrator.name}}'s {{illustrator.website2text}}</a></li> 
       </ul> 
      </div> 
     </article> 
</div> 

и IllustratorController является:

function Illustrator ($scope){ 
$scope.illustrators = [ 
    { 
     "ID" : "Ilus1", 
     "name" : "Ilus1", 
     "website" : "http://Ilus1page.com/" 
    },{ 
     "ID" : "Ilus2", 
     "name" : "Ilus2", 
     "website" : "http://Ilus2page.com/" 
    }, ... 
    { 
     "ID" : "IlusX", 
     "name" : "IlusX", 
     "website" : "http://IlusXpage.com/" 
     "website2text" : "Twitter IlusX", 
     "website2url" : "http://twitterilusx.com/" 
    } 
] 
} 

Так что мой вопрос, как я могу показать имеющуюся информацию и оставить Ли, где нет информации не дается.

Так что на этой линии:

<li>Website: <a href="{{illustrator.website2url}}">{{illustrator.name}}'s {{illustrator.website2text}}</a></li> 

как я могу сказать, что эта строка просто отображается, когда параметр объекта задан или не пусто. Я уже искал пути. Есть что-то под названием ng-if и ng-ui но это не сработало для меня. Также есть способ реализовать это с помощью классов и скрытия div. Но на самом деле я бы предпочел не генерировать их. И website2url/website2text - просто пример, есть больше значений, чем это.

Подобные вопросы, но у меня это немного более особенным Я считаю:

+0

Можете ли вы объяснить, как нг-если не работает для вас? – JMK

+0

ng-show или ng-if – sambomartin

+0

Можете ли вы добавить код в jsfiddle – Mitul

ответ

1

Привет создать фильтр для к показать ссылку не как

<li ng-if="showSecondWebLink(illustrator)">....</li> 

создать функцию в контроллере

$scope.showSecondWebLink = function(illustrator){ 
    if(illustrator.website2url && illustrator.website2text){ 
     return true; 
    } 
    return false; 
} 
+0

На самом деле мне нравится способ поместить эту логику в контроллер. Я исправил небольшую проблему в вашем коде. Благодарю. – kwoxer

+0

Не могли бы вы рассказать мне, что не так в коде, поэтому я буду обновлять. – Mitul

+0

Ну кто-то удалил мое изменение ... Я просто удалил **! = '' **, тогда он работает. – kwoxer

1

Просто попробуйте:

<li ng-if="illustrator.website2url && illustrator.website2text">...</li> 
+0

Я просто попробовал это так: '' 'ng-if =" illustrator.website2url! = '' "' ''. Это было слишком легко, спасибо, мой друг, он работает правильно. – kwoxer

+1

@kwoxer, 'null! = ''' – Grundy

Смежные вопросы