Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Как в шаблоне диррективы узнать массив это или строка? (https://javascript.ru/forum/angular/45811-kak-v-shablone-dirrektivy-uznat-massiv-ehto-ili-stroka.html)

delias 17.03.2014 12:49

Как в шаблоне диррективы узнать массив это или строка?
 
Подскажите, у меня в директиву передаётся объект
Код:

<typeahead model="paragraph.executors" actors="users" text="Исполнитель"></typeahead>
объекты могут быть двух видов:
1. "executors" : ["item1","item2"]
2. "control" : "item"

дальше я его в шаблоне репитом отрисовываю:
Код:

<span ng-repeat="item in model">
  <b>{{actors[item].fio}}</b>
</span>

но так как бывают случаи, когда передаётся не массив а строка, в итоге ng-repeat эту строку рисует по буквам.

есть вариант передавать массив это или нет в параметрах директивы (single):
<typeahead model="paragraph.executors" single="false" actors="users" text="Исполнитель"></typeahead>
но как-то это по-моему неправильно.
Я в шаблоне могу узнать как-то, приходит это массив или не массив?

FireVolkhov 18.03.2014 07:33

1. Где пример на сервисе типа http://jsfiddle.net?
2. ИМХО то, что передается либо массив, либо строка - это в корне не верно, как потом другой программист будет в этом разбираться?
3. Попробуй в шаблоне
<div ng-if="angular.isArray(model)">
   <span ng-repeat="item in model">
      <b>{{actors[item].fio}}</b>
   </span>
</div>
<div ng-if="angular.isString(model)">
   что-то другое
</div>

в линк функции директивы
scope.angular = angular;


Часовой пояс GMT +3, время: 05:49.