使用自定义元素进行aurelia-breeze验证

时间:2016-02-26 20:35:46

标签: breeze aurelia aurelia-binding aurelia-breeze

注意:此方案与此问题中的方案相同:Data binding parent-child relationships in Aurelia

代码:

用法:

<form role="form" id="formShipment" breeze-validation.bind="shipment">
    <widget-picker widget.bind="shipment.widget" widgets.bind="widgets"></widget-picker>
</form>

插件-picker.js

import {bindable, bindingMode} from 'aurelia-framework';

export class WidgetPicker {
  @bindable({ defaultBindingMode: bindingMode.twoWay }) widget;
  @bindable widgets;
}

插件-picker.html

<select value.bind="widget">
  <option repeat.for="widget of widgets" model.bind="widget">${widget.name}</option>
</select>

<!-- Some other UI stuff that I would rather not turn red if the above fails validation-->

问题:

我正在尝试构建一个组件化的UI,并且有一个控件/元素来控制选择一个Widget(widget-picker)。

但是我也需要知道shipment.widget是必需的(并在小部件控件上显示它。)

但有两件事阻止了这一点。

  1. 在aurelia-validation.js中,subscribe方法仅查看具有breeze-validation自定义属性的视图上的绑定。通过查看视图的控制器视图(并获取绑定),可以很容易地解决这个问题:
  2. this.view.controllers.forEach(function (controller) { if (controller.view) controller.view.bindings.forEach(function (binding) { existingListOfCurrentViewsBindings.push(binding) }) })

    1. 但由于shipment.widget通过了@bindable,因此它没有source属性。这意味着即使aurelia-validation查看了子自定义元素,查找breeze属性的当前方法也会失败。
    2. 问题:

      有没有办法让aurelia-breeze支持验证自定义元素(在失败的控件上)?

      注意:我可以在一般验证区域中显示验证,但由于我的大多数UI都是以自定义元素运行,因此我几乎可以使用所有UI。这不像用户友好的那样接近控制失败的东西。

0 个答案:

没有答案