如何为sap.m.DatePicker指定约束?

时间:2017-07-13 06:26:11

标签: sapui5

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'
  }
}" />

1 个答案:

答案 0 :(得分:2)

不幸的是,在另一个绑定定义中没有绑定支持(和won't be any),这就是约束中'/min''/max'之类的绑定路径无效的原因。这是不可能的,因为只有从MananagedObject延伸的模块才支持数据绑定功能。

因此,这些定义必须在XML视图之外的JS中完成。其中一个解决方法是在控件实例上调用bindProperty的高级API(在我们的例子中为bindValue),同时可以在XML视图中保留控件设置。

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

XML视图

<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