Конкатенация в HTML с использованием AngularJS - PullRequest
0 голосов
/ 27 марта 2019

Мой контроллер AngularJS (называемый «поиск») имеет переменные:

this.redInfo = [...];
this.blueInfo = [...];
this.greenInfo = [...];
this.tableSelector = ''; //this can either be 'red', 'blue', or 'green'

Я пытаюсь сделать ng-repeat, где информация, которая повторяется, зависит от tableSelector.Это возможно?Вот что у меня сейчас:

<div ng-repeat="row in {{'search.' + search.tableSelector + 'Info'}} track by $index">

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Используйте скобку свойство accessor:

<div ng-repeat="row in search[search.tableSelector + 'Info'] track by $index">
1 голос
/ 27 марта 2019

То, что вы сейчас пытаетесь, невозможно.Вы можете создать метод, который возвращает соответствующий массив повторов:

this.getColorArray = function() {
   if (this.search.tableSelector == "red") return this.redInfo
   ...
}

Затем повторите это:

<div ng-repeat="row in search.getColorArray() track by $index">

В зависимости от сайта массива и других наблюдателей на странице, это может повлиятьспектакль.Если вы знаете, где меняется tableSelector - вы всегда можете установить свой массив повторений в этой точке и избежать дополнительных затрат в циклах $ digest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...