значение усилителя заменить на месте

1

У меня есть amp-list, который загружает кучу данных, и я показываю их в своих соответствующих заполнителях просто красиво и просто. То, что я намереваюсь сделать, это получить значение и запустить на нем простой скрипт. Пусть думаю, что у меня есть

<div>{{title}}</div>

где заголовок: "This-is-my-title"

теперь я хотел бы заменить "-" в заголовке, я знаю, что могу сделать это с помощью javascript, используя title.replace( / -/g,' '), как я могу это сделать? Я старался

<div>{{title.replace(/-/g,' ')}}</div>

но не повезло :(

  • 0
    {{title}} -> какой механизм разметки / шаблонирования вы используете? Рули?
Теги:
amp-html
replace

2 ответа

2

Похоже, вы используете 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 и работать)

2

В простом javascript:

title = 'This-is-my-title'; title.replace(/-/g, ' '); 

дает вам "This is my title".

Я предполагаю, что вы используете угловой, в этом случае текст внутри {{}} не оценивается как чистое выражение javascript. Вы можете написать угловой фильтр для применения к выражению (как описано в Угловом фильтре, чтобы заменить все подчеркивания на пробелы). Вероятно, было бы легче справиться с этим в контроллере за шаблоном. Что-то вроде:

$scope.title = $scope.title.replace(/-/g,' ');

Ещё вопросы

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