Angularjs 使用Breeze在基于角度的SPA中验证剑道日期选择器
我在建一个有角的水疗中心。后端是一个ASP.NET MVC WebApi服务器。模型是 在实体框架的帮助下持久化。Breeze获取由提供的元数据 实体框架,并将其传输到浏览器中的SPA应用程序 在一种情况下,我使用剑道日期选择器。它配置了德语日期格式(“dd.MM.yyyy”)。 我还用data-z-validate属性注释了输入标记 当有人输入无效的日期字符串时,我希望看到带有 验证错误消息。不幸的是,这并没有发生。更糟糕的是,似乎没有验证 根本就没有被执行过 我需要在客户端添加自定义验证器吗?如果是,我该怎么做 角度视图:Angularjs 使用Breeze在基于角度的SPA中验证剑道日期选择器,angularjs,kendo-ui,breeze,Angularjs,Kendo Ui,Breeze,我在建一个有角的水疗中心。后端是一个ASP.NET MVC WebApi服务器。模型是 在实体框架的帮助下持久化。Breeze获取由提供的元数据 实体框架,并将其传输到浏览器中的SPA应用程序 在一种情况下,我使用剑道日期选择器。它配置了德语日期格式(“dd.MM.yyyy”)。 我还用data-z-validate属性注释了输入标记 当有人输入无效的日期字符串时,我希望看到带有 验证错误消息。不幸的是,这并没有发生。更糟糕的是,似乎没有验证 根本就没有被执行过 我需要在客户端添加自定义验证器吗
<input kendo-date-picker id="aktion-termin" type="text" placeholder="Termin"
k-ng-model="vm.aktion.termin" k-format="'dd.MM.yyyy'"
data-z-validate />
元数据:
"entityType":[
{
"name":"Aktion",
...
"property":[
...
{
"name":"Termin",
"type":"Edm.DateTime"
},
...
],
...
}
其他信息
同一表单上还有另一个必填字段。在这里,验证工作正常。验证
当我将字段留空时,出现错误弹出窗口。因此,整个基础设施似乎都能正常工作。但是
它是一个标准输入字段。没有剑道参与
<input class="form-control" id="aktion-titel" placeholder="Name"
data-ng-model="vm.aktion.titel" data-z-validate />
所述日期字段也起作用。根据给定格式输入有效的日期字符串时
(例如,“02.01.2015”)执行保存命令后,我可以在数据库中看到正确的值。我也能看见
由Breeze发送到服务器的JSON中插入的日期。只要系统正常运行,一切都正常
插入的日期字符串满足给定的日期格式
{
"$id":"1",
"$type":"Breeze.ContextProvider.SaveResult, Breeze.ContextProvider",
"Entities":[
{
"$id":"2",
"$type":"Aktionen.Model.Aktion, Aktionen.Model",
"Id":"a0b2639a-c79b-46ef-a5ee-6982dcbe1782",
"Titel":"abc",
"Termin":"2015-01-02T00:00:00.000+01:00", // <----- ok
...
},
...
],
"KeyMappings":[
],
"Errors":null
}
{
“$id”:“1”,
“$type”:“Breeze.ContextProvider.SaveResult,Breeze.ContextProvider”,
“实体”:[
{
“$id”:“2”,
“$type”:“Aktionen.Model.Aktion,Aktionen.Model”,
“Id”:“a0b2639a-c79b-46ef-a5ee-6982dcbe1782”,
“滴度”:“abc”,
“Termin”:“2015-01-02T00:00:00.000+01:00”,//空
给定此输出,我假设剑道日期选择器仅在输入为
有效。我不确定日期选择器周围实际生成的HTML剑道是什么。我敢打赌,z-validate
无法识别它;z-validate
是一种原型或概念证明,它肯定不是在考虑剑道控件的情况下设计的
您是否可以查看新值是否写入实体的date属性?当您以编程方式而不是通过任何UI绑定设置属性时,Breeze是否也会验证日期?如果您不知道如何进行测试,请告诉我。Kendo UI Controls introduce一个新的k-ng-model
指令,该指令用于dat默认情况下,绑定而不是默认的角度ng模型
z-validate
仅识别ng模型
参见本节了解z-validate
,它为`z-validate'添加了对剑道UI控件的支持
由@Ward决定这是否适合默认的z-validate
发行版,但您仍然可以将PR应用到您使用过的breeze.directions.js
版本。我在我的问题中添加了一些附加信息。但它看起来更像是与剑道相关,而不是与breeze相关。这现在包含在breeze中指令1.3.10
{
"$id":"1",
"$type":"Breeze.ContextProvider.SaveResult, Breeze.ContextProvider",
"Entities":[
{
"$id":"2",
"$type":"Aktionen.Model.Aktion, Aktionen.Model",
"Id":"a0b2639a-c79b-46ef-a5ee-6982dcbe1782",
"Titel":"abc",
"Termin":"2015-01-02T00:00:00.000+01:00", // <----- ok
...
},
...
],
"KeyMappings":[
],
"Errors":null
}
{
"$id":"1",
"$type":"Breeze.ContextProvider.SaveResult, Breeze.ContextProvider",
"Entities":[
{
"$id":"2",
"$type":"Aktionen.Model.Aktion, Aktionen.Model",
"Id":"736f976c-9e3b-42ee-90a9-ca421b6c2843",
"Titel":"The Name",
"Termin":null, // <------ bad
...
},
...
],
"KeyMappings":[
],
"Errors":null
}
function save() {
if (vm.isSaving) { return common.$q.when(null); }
if (!canSave()) { return common.$q.when(null); }
vm.aktion.termin = "xyz"; // <--------- rubbish
vm.isSaving = true;
return datacontext.save().then(function() {
vm.isSaving = false;
}, function () {
vm.isSaving = false;
});
}