Я развиваюсь, используя aureliajs. В настоящее время я работаю над пользовательским атрибутом, который помечен, чтобы иметь динамические параметры. Например, рассмотрим следующий код:
import {dynamicOptions, inject} from 'aurelia-framework';
@dynamicOptions
@inject(Element)
export class SquareCustomAttribute {
constructor(element){
this.element = element;
}
propertyChanged(name, newValue, oldValue){
switch(name){
case 'fill':
this.element.style.backgroundColor = newValue;
break;
case 'size':
this.element.style.width = this.element.style.height = `${newValue}px`;
break;
default:
this.element.style[name] = newValue;
break;
}
}
}
теперь, например, рассмотрим, что я хочу дать свойству fill defaultBindingMode
of twoWay, поэтому я попытаюсь добавить свойство @bindable
в класс. Так что код изменится на это:
import {dynamicOptions, inject} from 'aurelia-framework';
@dynamicOptions
@inject(Element)
export class SquareCustomAttribute {
@bindable fill;
constructor(element){
this.element = element;
}
propertyChanged(name, newValue, oldValue){
switch(name){
case 'fill':
this.element.style.backgroundColor = newValue;
break;
case 'size':
this.element.style.width = this.element.style.height = `${newValue}px`;
break;
default:
this.element.style[name] = newValue;
break;
}
}
}
И переплет перестает работать.
Итак, первый вопрос: как установить defaultBindingMode для dynamicOptions?
И еще один маленький вопрос. Как говорит aurelia.io , Binding to a dynamic options attribute works exactly the same as binding to an options attribute in the DOM.
. В соответствии с этим предложением я ожидаю связать разделенные тире динамические параметры и извлечь случай верблюда для метода optionsChanged
. Но черта отделяет опции, связанные из поля зрения, получает черту и верблюдов, верблюдов. Это правильно в соответствии с предложением из aurelia.io ?