У меня есть amp-list, который загружает кучу данных, и я показываю их в своих соответствующих заполнителях просто красиво и просто. То, что я намереваюсь сделать, это получить значение и запустить на нем простой скрипт. Пусть думаю, что у меня есть
<div>{{title}}</div>
где заголовок: "This-is-my-title"
теперь я хотел бы заменить "-" в заголовке, я знаю, что могу сделать это с помощью javascript, используя title.replace( / -/g,' ')
, как я могу это сделать? Я старался
<div>{{title.replace(/-/g,' ')}}</div>
но не повезло :(
Похоже, вы используете amp-mustache
. Я не думаю, что вы можете использовать пользовательский JavaScript в Mustache.js, а ограничения от AMP запрещают вам создавать какую-то функцию, которую вы можете вызвать в {{}}
. Я бы предложил обработать в бэкэнд перед отправкой. (К сожалению, на данный момент нет других шаблонов, кроме усов)
Существует способ обхода математики с использованием amp-bind
здесь: AMP Mustache и Math. Возможно, после загрузки JSON с amp-state
, что-то вроде
myItems.map(entry => ({
myString: entry.myString.split('').map(c => c == '-' ? ' ' : c).join('')),
})
(я не тестировал себя, но стоит попробовать, проверьте функции с белыми списками здесь: https://www.ampproject.org/es/docs/reference/components/amp-bind#white-listed-functions), но все равно может быть боль в производительности (amp-bind имеет довольно много накладных расходов)
Редактирование: на самом деле это выглядит довольно многообещающим, только что узнал на самом деле amp-list
с amp-bind
do accept object для [src]
, как описано в документе (изучая что-то новое): https://www.ampproject.org/docs/reference/components/amp-bind (проверить исходный код amp-list
и работать)
В простом javascript:
title = 'This-is-my-title'; title.replace(/-/g, ' ');
дает вам "This is my title"
.
Я предполагаю, что вы используете угловой, в этом случае текст внутри {{}} не оценивается как чистое выражение javascript. Вы можете написать угловой фильтр для применения к выражению (как описано в Угловом фильтре, чтобы заменить все подчеркивания на пробелы). Вероятно, было бы легче справиться с этим в контроллере за шаблоном. Что-то вроде:
$scope.title = $scope.title.replace(/-/g,' ');