Учитывая примеры, которые вы показали, я бы рекомендовал использовать вариант 2. Это действительно не «проще на Aurelia», но более очевидно, что вы привязывая значение этого атрибута к указанному свойству.
Оригинал ответа Ниже
в пользу первого варианта, когда у вас есть, например, атрибут, который принимает много значений, но в виде одной строки. Наиболее распространенным примером этого является атрибут class
. Атрибут class
принимает несколько классов в разделенных пробелами список:
<div class="foo bar baz"></div>
Представьте, что мы только хотим, чтобы добавить или удалить класс baz
из этого списка на основе опоры на нашей виртуальной someProp
, оставляя другие классы. Чтобы сделать это, используя синтаксис .bind
, нам нужно было бы создать свойство на нашей виртуальной машине, которое имеет полный список, но добавляет или удаляет baz
, как определено значением someProp
. Но с помощью строки интерполированное связывания, это становится гораздо проще:
<div class="foo bar ${someProp ? 'baz' : ''}"></div>
Вы можете себе представить, как это может быть расширена с помощью нескольких классов быть добавлены или удалены. Возможно, вы можете создать конвертер значений, чтобы сделать это, используя синтаксис .bind
, но это может закончиться тем, что было не так читаемо.
я мог себе представить, конвертер значение создается, что может выглядеть примерно так в использовании:
<div class.bind="someProp | toggleClass:'baz':'foo':bar'"></div>
Я действительно думаю, что это намного меньше, чем для чтения с использованием синтаксиса строки интерполяции.
Кстати, стоимость преобразователя я вообразил выше будет выглядеть следующим образом:
export class ToggleClassValueConverter {
toView(value, toggledClass, ...otherProps) {
return `${otherProps.join(' ')} ${value ? toggledClass : ''}`;
}
}
Лучшая часть является то, что я до сих пор используют интерполяцию строки в преобразователе значение :-)
«Примеры, которые я имею в виду, похожи на приведенные выше, они не добавляют никакого дополнительного содержимого строки». :) Таким образом, рассматриваемые случаи всегда имеют вид = "$ {...}", это не такие вещи, как class = "class1 $ {...}", которые, я согласен, будут полезны случай для интерполяции. – Dave
Да, но вы спросили, есть ли какая-либо польза для формы интерполяции строк, поэтому я привел пример того, где ее проще использовать. –
Мне показалось, что я ясно сказал в вопросе, что я специально спрашивал о случаях, когда строки фактически не были интерполированы. Я перефразирую его, чтобы сделать его более очевидным. Приветствия. – Dave