如何处理剑道UI MVVM日期选择器初始化

How to handle Kendo UI MVVM Date Picker Initialisation

本文关键字:MVVM UI 日期 选择器 初始化 何处理 处理      更新时间:2023-09-26

我有两个视图…

一个用于数字文本框:
@Html.TextBoxFor(m => m, new { 
    @class = "k-input",
    data_bind = "value: " + ViewData.TemplateInfo.HtmlFieldPrefix,
    data_role = "numerictextbox",
    data_format = @"'#",
    data_decimals = "0"
})
@Html.ValidationMessageFor(m => m)

还有一个是日期选择器:

@Html.TextBoxFor(m => m, new
{
    @class = "k-input",
    data_bind = "value: " + ViewData.TemplateInfo.HtmlFieldPrefix,
    data_role = "datepicker",
    data_format = "dd MMM yyyy",
    type = "date"
})
@Html.ValidationMessageFor(m => m)

为什么数字框一个工作,而日期选择器不工作?

一些附加信息:

我使用Knockout Kendo来MVVM绑定模型到渲染字段。因此,在客户端,我最终使用了一个包含这两种字段类型的容器元素。

数据来自OData端点,所以日期是标准的ISO格式。

支持这个的javascript是…

$(function () {
    var model = new kendo.observable({
        data: null,
        fetch: function (callback) {
            $.get("...", function (res) {
                res.date = kendo.parseDate(res.date);
                result.data = res;
                if (typeof callback != 'undefined') { callback(); }
            });
         }
    });
    model.fetch(function () {
        var component = $("#...");
        kendo.bind(component, model.data);
    });
});

日期选择器是否需要以某种方式与数字框区别对待?我的结果是一个标准的html日期字段,chrome附加了它的基本日期选择器和一个带有kendo上下箭头的数字文本框。

我希望这之后都是标准的剑道字段(除非我错过了什么)。

好的,所以事实证明这都不是错误的,事实上这是正确的方式来初始化两个控件与MVVM绑定对象。

问题是在页面上的另一个控件(在int和date控件之间),这意味着绑定过程在初始化数字框之后,但在日期选择器之前被中断。

我现在感觉没那么疯狂了