假设我正在使用Aurelia自定义属性,是否可以在绑定到另一个自定义属性的值发生更改时触发事件?
更具体地说,我正在为选择建立Aurelia自定义属性。我得到了所有选择的工作。
但<select>
元素上有focus.bind="isFocused"
。当绑定值发生变化时,我需要知道(在我选择的自定义属性中)。
有没有办法在我选择的自定义属性中访问焦点绑定(来自焦点自定义属性)?可能使用绑定引擎甚至是内部方法?
(注意:我考虑过制作一个自定义元素来执行此操作,但Aurelia不能很好地包装元素。我必须为样式,类和原始选择组件上的任何其他内容编写连接。)< / p>
答案 0 :(得分:0)
我不确定这是否是正确的做法,但这是我迄今为止发现的最简单方法。
我-attr.js 强>
import { inject } from 'aurelia-framework';
import { Focus } from 'aurelia-templating-resources';
@inject(Focus)
export class MyAttrCustomAttribute {
constructor(focusAttr) {
this.focusAttr = focusAttr;
}
attached() {
console.log(this.focusAttr.value); //bound value
//...
//extending the change event. BE CAREFUL!
//...
const originalValueChanged = this.focusAttr.valueChanged;
this.focusAttr.valueChanged = function(newValue) {
console.log('Focus bound value has changed!'); //<-- call an event before "focus"
originalValueChanged.call(this, newValue); //<-- "focus" is enqueued
// <--- enqueue an event event here to be called after "focus"
}
}
}
答案 1 :(得分:0)
尝试使用绑定行为拦截绑定的updateSource
(更新视图模型)和updateTarget
(更新视图)方法。在自定义绑定行为部分的文档中有一个这样的运行示例。