从另一个自定义属性访问自定义属性的绑定

问题描述:

假设我有一个Aurelia自定义属性与我一起工作,当绑定到另一个自定义属性的值更改时是否可以触发事件?从另一个自定义属性访问自定义属性的绑定

说得更加具体而言,我建立一个奥里利亚自定义属性进行选择的。我得到了所有选择的工作。

<select>元素上有一个focus.bind="isFocused"。当绑定值发生变化时,我需要知道(在我选择的自定义属性中)。

是否有某种方式来访问焦点(从对焦自定义属性)结合在我所选择的自定义属性?也许使用绑定引擎或甚至内部方法? (注:我考虑制作一个自定义元素来做到这一点,但Aurelia不能很好地包装元素,我必须为原始选择元件上的样式,类和其他任何东西编写连接代码)。

+0

也许你可以使用绑定行为'signal':http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-binding-behaviors/5刚第一个想法 –

+0

@marc我深入了解了这一点。它不适用于这种情况。 – Vaccano

我不确定这是否是正确的方式,但这是迄今为止我找到的最简单的方法。

我-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" 
    } 

    } 
} 

运行例如https://gist.run/?id=ab04facb60b39f9c6a5fc49c2fd278a6

尝试使用绑定行为拦截绑定的updateSource(更新视图模型)和updateTarget(更新视图)的方法。在自定义绑定行为部分的文档中有一个运行示例。

http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-binding-behaviors/8

+0

如果第二个绑定是可选的,该怎么办? –