依赖于另一个小部件值的 Dojo 验证

Posted

技术标签:

【中文标题】依赖于另一个小部件值的 Dojo 验证【英文标题】:Dojo validation that depends on another widget value 【发布时间】:2013-03-21 16:12:33 【问题描述】:

我有一个带有验证参数的小部件,例如“min”和“max”。我希望动态设置“min”,因为它取决于另一个小部件中包含的值。

<input id="test" type="text"
    data-dojo-type="dijit/form/NumberTextBox"
    name= "elevation"
    required="true"
    value="3000"
    data-dojo-props="constraints:min:-20000,max:20000,places:0,
    invalidMessage:'Invalid elevation.'" />

我怎样才能做类似 min: testWidget.getValue() 的事情

谢谢。

【问题讨论】:

【参考方案1】:

您需要做的就是使用_WidgetBase#set 方法。以下是 Dojo 的 API 文档中的描述:

在小部件上设置属性 在小部件上设置命名属性,这些属性可能由小部件中的设置器处理。

例如,如果小部件具有属性“foo”和“bar”以及名为 _setFooAttr() 的方法,则调用 myWidget.set("foo", "Howdy!") 将等效于调用 widget._setFooAttr("你好!") 和 myWidget.set("bar", 3) 等价于声明 widget.bar = 3;

set() 也可以使用名称/值对的散列来调用,例如:

因此,使用您的小部件参考,您可以简单地执行以下操作:

var elevationInput = dijit.byId("test");
var constraints = 
  min: testWidget.getValue(); // or testWidget.get("value")
  max: elevationInput.constraints.max
;
elevationInput.set("constraints", constraints);

【讨论】:

以上是关于依赖于另一个小部件值的 Dojo 验证的主要内容,如果未能解决你的问题,请参考以下文章

在 flexdashboard 闪亮小部件中创建一个依赖于另一个输入变量的输入变量

流光小部件依赖

Dojo Dijit - 小部件中的小部件

如何在 Flutter 中相对于另一个小部件定位小部件?

dojo 小部件不会发出事件

自定义小部件内的 dojo 小部件的可寻址性