【问题标题】:Knockout.JS Bindinghandlers moment.jsKnockout.JS Bindinghandlers moment.js
【发布时间】:2013-02-27 13:13:14
【问题描述】:

我想用 moment.js 格式化我的 knockoutjs 绑定日期。我的代码有什么问题?

        var modelNots;
        function NotsViewModel() {
            var self = this;
            self.msgs = ko.observableArray();     
        }
        modelNots = new NotsViewModel();
        var thediv=$("#notSection")[0];
        ko.applyBindings(modelNots, thediv );

        ko.bindingHandlers.Date = {
            update: function (element, valueAccessor) {
                var value = valueAccessor();
                var date = moment(value());
                var strDate = date.format('YYYY-MM-DD');
                $(element).text(strDate);
            }
        };

HTML:

<div data-bind="foreach: msgs">
   <div data-bind="text:Date"></div>
</div>

【问题讨论】:

    标签: javascript data-binding knockout.js momentjs


    【解决方案1】:

    要在 Knockout 中使用新的数据绑定器,您正在创建一个新前缀,因此您的 html 应该如下所示(假设每个 msgs 元素都有一个“值”属性:

    <div data-bind="foreach: msgs">
       <div data-bind="Date: value"></div>
    </div>
    

    【讨论】:

    • 我将 html 更改为 &lt;div data-bind="bDate:Date"&gt;&lt;/div&gt;,将 js 更改为 `ko.bindingHandlers.bDate = {...` 但没有绑定任何内容
    • 也许这与我将模型绑定到节点有关?
    • 在上面的代码中,“msgs”是一个可观察的数组,但实际上并没有向其中添加任何内容。如果数组中没有任何项目,则无法渲染任何内容。
    • 我将值添加到另一个地方。 msgs 有值。这不是问题。
    • moment.js 似乎是问题所在。日期格式为:2013-02-27T11:19:00.853
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2022-07-12
    • 2013-04-22
    • 2018-06-01
    相关资源
    最近更新 更多