5

大家好,

在我的 Angular 应用程序中使用 Kendo-UI 日期选择器时遇到了一些问题。任何帮助将不胜感激。

提前致谢,
德鲁

问题

当对日期选择器使用 angular-kendo 指令以及日期格式时,会将日期对象放入模型中。所需的行为是在模型中存储由选项格式化的字符串。

Javascript 版本

Angular-Kendo 0.5.2 2013-07-26

AngularJS v1.0.5

jQuery jQuery v1.9.1

来自模板的片段

<input type="text" name="publicationDate" ng-model="preview.publicationDate" kendo-date-picker="dateOptions" k-options="dateOptions" />

日期选项

$scope.dateOptions = {
    格式:“yyyy-MM-dd”
};

输出

存储在模型中的日期对象:2013 年 9 月 17 日星期二 00:00:00 GMT-0400 (EDT)
要存储在模型中的所需字符串:2013-09-17

问题

  1. 这个问题有什么补救措施吗?
  2. 我是否正确使用该指令?
4

4 回答 4

4

在 Kendo UI 2014 Q2 (2014.2.625) 中,通过使用 k-ng-model 而不是 ng-model 来解决此问题。

于 2014-07-15T10:48:40.980 回答
3

我认为发生的事情是,当您通过 ng-model 进行绑定时,kendo 正在返回

.value()

在您的控制器中,我相信您可以这样做:

$scope.$watch('preview.publicationDate'), function (val) {
    if (val) {
       $scope.preview.publicatonDate = kendo.toString(val, "yyyy-MM-dd");
    }
});
于 2013-11-13T20:13:58.783 回答
3

此代码有助于将 kendo-date-time-picker 更改为所需的格式

<input kendo-date-time-picker
             k-options="monthSelectorOptions"
             k-format="'dd/MM/yyyy hh:mm tt'" />
于 2015-06-03T15:12:35.823 回答
2

可能的解决方案

我能够通过创建自定义指令来解决问题。此处另一个堆栈溢出帖子提供的示例演示了如何创建自定义指令。

我还有一些额外的测试要做,但它似乎正在工作。我不确定这是否是解决问题的最有效方法。

来自模板的片段

<input type="text" parsedate="yyyy-MM-dd" name="publicationDate" ng-model="preview.publicationDate" kendo-date-picker="" k-options="dateOptions"/>

自定义指令

module.directive("parsedate", function () {
    return {
        require: "ngModel", link: function (scope, element, attr, ngModel) {

            function parsedate(text, format) {
                return kendo.toString(text, attr.parsedate);
            }

            ngModel.$parsers.push(parsedate);
        }
    };
});
于 2013-09-18T12:43:50.023 回答