从另一个自定义属性访问自定义属性的绑定
问题描述:
假设我有一个Aurelia自定义属性与我一起工作,当绑定到另一个自定义属性的值更改时是否可以触发事件?从另一个自定义属性访问自定义属性的绑定
说得更加具体而言,我建立一个奥里利亚自定义属性进行选择的。我得到了所有选择的工作。
但<select>
元素上有一个focus.bind="isFocused"
。当绑定值发生变化时,我需要知道(在我选择的自定义属性中)。
是否有某种方式来访问焦点(从对焦自定义属性)结合在我所选择的自定义属性?也许使用绑定引擎或甚至内部方法? (注:我考虑制作一个自定义元素来做到这一点,但Aurelia不能很好地包装元素,我必须为原始选择元件上的样式,类和其他任何东西编写连接代码)。
答
我不确定这是否是正确的方式,但这是迄今为止我找到的最简单的方法。
我-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"
}
}
}
答
尝试使用绑定行为拦截绑定的updateSource
(更新视图模型)和updateTarget
(更新视图)的方法。在自定义绑定行为部分的文档中有一个运行示例。
http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-binding-behaviors/8
+0
如果第二个绑定是可选的,该怎么办? –
也许你可以使用绑定行为'signal':http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-binding-behaviors/5刚第一个想法 –
@marc我深入了解了这一点。它不适用于这种情况。 – Vaccano