This是我们在 controller.js 中为DatePicker指定minimum
/ maximum
约束的方式。
但是如何在XML视图中执行此操作?
XML中的代码不起作用。
<DatePicker id="dp" value="{
path: '/val',
type:'sap.ui.model.type.Date',
formatOptions: {
pattern: 'yyyy-MM-dd',
strictParsing: 'true'
},
constraints: {
minimum: '/min',
maximum: '/max'
}
}" />
答案 0 :(得分:2)
不幸的是,在另一个绑定定义中没有绑定支持(和won't be any),这就是约束中'/min'
或'/max'
之类的绑定路径无效的原因。这是不可能的,因为只有从MananagedObject延伸的模块才支持数据绑定功能。
因此,这些定义必须在XML视图之外的JS中完成。其中一个解决方法是在控件实例上调用bindProperty
的高级API(在我们的例子中为bindValue
),同时可以在XML视图中保留控件设置。
<DatePicker id="dp"/>
this.byId("dp").bindValue({
path: "/val",
type: "sap.ui.model.type.Date",
formatOptions: {
pattern: "yyyy-MM-dd",
strictParsing: true
},
constraints: {
minimum: myModel.getProperty("/min"),
maximum: myModel.getProperty("/max")
}
});
或者,您可以在XML视图中保留绑定路径,并在value
- PropertyBinding实例中仅使用type (Date)在JS中设置绑定setType
:
<DatePicker id="dp" value="{/val}"/>
// In sap.ui.define, "sap/ui/model/type/Date" provides the parameter name "DateType"
this.byId("dp").getBinding("value").setType(new DateType({
pattern: "yyyy-MM-dd",
strictParsing: true
}, {
minimum: myModel.getProperty("/min"),
maximum: myModel.getProperty("/max")
}), "string");
setType
的第二个参数是value
属性的JS类型的名称,又名&#34;内部类型&#34;。在这种情况下,它是"string"
。
内部类型是值被格式化为的元素的属性类型。
在这里,我相应地编辑了你的JSBin:https://jsbin.com/xesiser/edit?js,output