更新 Aurelia 自定义属性中的绑定
Update a binding in an Aurelia custom attribute
代码:
我的视图模型.html
<input on-scan.bind="onAirbillScanned" value.bind="airbill"/>
扫描时
attached() {
var scannerOptions = { onComplete: this.onScan.bind(this), preventDefault: true };
(<any>$(this.element)).scannerDetection(scannerOptions);
-- Code to add a signal to the value binding.
}
onScan(scannedValue, data) {
if (typeof (this.value) == 'function') {
let updatedScanValue = this.value(scannedValue);
if (updatedScanValue !== undefined)
this.element.value = updatedScanValue;
else
this.element.value = scannedValue;
-- Code to Call the Signal
}
}
问题:
我有一个自定义属性,允许我检测扫描,修改扫描的数据并将其设置为输入元素的值。
但是,我需要用更新的值更新奥雷利亚。
我可以触发一个"输入"事件来实现这一目标。 但是我发现了触发随机"输入"事件的副作用。
我宁愿使用这里概述的信号系统:http://aurelia.io/docs.html#/aurelia/binding/1.0.0-beta.1.1.3/doc/article/binding-binding-behaviors
但问题是我需要信号在value.bind
绑定上。
问题:
有没有办法(使用我对绑定所在element
的访问权限)来更新value.binding
,以获得我可以调用的信号来更新绑定?
基本上我正在寻找这样的东西:
addSignal(element, property, signal) {...}
..
addSignal(this.element, 'value', 'scanFinished');
它将更新输入的值绑定,如下所示:
<input on-scan.bind="onAirbillScanned" value.bind="airbill & signal: 'scanFinished'"/>
但不仅仅是重写html,它还必须更新Aurelia以了解信号。
或者 Aurelia 是否为此类场景的所有绑定添加了信号值?
注意:如果所有 aurelia 绑定都定义了AureliaBinding
信号,那就太棒了,这样您就可以针对该控件并发送一个除了更新绑定之外没有副作用的事件。
我认为您遇到了麻烦,因为您正处于从自定义属性切换到使用自定义元素的方法的临界点。
您可以通过执行以下操作来规避整个问题:
扫描仪.html
<template>
<input ref="input" value.bind="value">
</template>
扫描仪.js
import {bindingMode} from 'aurelia-framework';
export class Scanner {
@bindable({ defaultBindingMode: bindingMode.twoWay }) value;
@bindable scanModifier = x => x;
input: HTMLInputElement;
attached() {
let scannerOptions = {
onComplete: value => this.value = this.scanModifier(value),
preventDefault: true
};
(<any>$(this.input)).scannerDetection(scannerOptions);
}
detached() {
(<any>$(this.input)).scannerDetection('destroy');
}
}
用法:
<require from="./scanner"></require>
<scanner value.bind="airbill" scan-modifier.call="onAirbillScanned($event)"></scanner>
这仍然可以使用自定义属性来完成,但对我来说似乎更自然。 你觉得怎么样?
相关文章:
- 将指令绑定到控制器属性
- 设置自动分隔符的自定义属性
- 与ng attr myCustomAttribute匹配的自定义属性指令
- 获取自定义属性的值
- 如何创建自定义属性以添加if.bind
- 动态更新Angular2指令中自定义属性的值
- 如何使用子上下文可访问的自定义属性扩展模板绑定语法
- 在 aurelia 中使用 repeat.for 绑定自定义元素的正确方法是什么
- 挖空绑定自定义组件,使其不与中心视图模型冲突
- 如何强制挖空以重新绑定自定义绑定
- Aurelia 自定义属性中的双向绑定
- 更新 Aurelia 自定义属性中的绑定
- 如何在 AngularJS 中绑定自定义事件
- 无法绑定自定义元素
- 在jQuery中绑定自定义事件时触发代码
- 材质角度复选框绑定自定义输入复选框
- 如何使用jQuery绑定自定义事件的函数
- 使用敲除绑定自定义事件
- 自定义属性双向绑定不起作用
- 从元素中解绑定自定义函数