Aurelia абсолютно поддерживает связывание с Ad-Hoc/произвольных свойств на DOM элемента ,
Когда вы пишете <ul for="${id}"> ... </ul>
Aurelia собирается присвоить значение свойства id
специальному объявлению на элементе ul
.
Это эквивалент ul.for = id
или ul['for'] = id
.
Части вы упускаете это установку произвольного свойства на элементе DOM не автомагический создать соответствующую HTML атрибута. Другими словами, существует разница между ul.for = id
и ul.setAttribute('for', id)
. Это легко забыть, потому что мы обычно работаем со стандартными атрибутами html, а DOM имеет специальную логику, чтобы отразить значение атрибута HTML с соответствующим свойством DOM. Эта специальная логика не существует для любых свойств, которые вы могли бы добавить в свой код/привязки.
Вы можете заставить связывание использовать setAttribute
вместо стандартного поведения путем создания обязательного поведения:
https://gist.run/?id=feedfd7659d90c0bdf6d617a244288a6
установку атрибута.JS
import {DataAttributeObserver} from 'aurelia-binding';
export class SetAttributeBindingBehavior {
bind(binding, source) {
binding.targetObserver = new DataAttributeObserver(binding.target, binding.targetProperty);
}
unbind(binding, source) {}
}
использование:
<template>
<require from="./set-attribute"></require>
<ul for.bind="id & setAttribute"></ul>
<ul for="${id & setAttribute}"></ul>
</template>
EDIT
Aurelia теперь поставляется с обязательным поведением attr
. Используйте <ul for="id & attr">
. Вот обновленный пример: https://gist.run/?id=5a12f928d66b6d92c592feb6a62940ad
Нет - это требование библиотеки, поэтому оно должно быть «для» https://getmdl.io/components/index.html#menus-section –
Это полезно, но я не знаю, я действительно покупаю рассуждения. Существует много действительных атрибутов aurelia, которые вы можете иметь, которые не являются «стандартными» для элемента UL. Я думаю, что должен быть включен простой способ привязки к произвольным атрибутам, точно так же, как он был включен в durandal/knockout. –
Я думаю, что это может быть поддержано. Откройте билет в реплике с привязкой к шаблонам, и кто-то должен вернуться к вам с предложениями для PR. –