ko.mapping.fromJS和Date对象

时间:2013-08-06 21:16:19

标签: knockout.js

我过去曾问过关于淘汰赛的问题,但自从上一个问题得到解决以来,我没有机会参加淘汰赛。我的最新问题是关于使用ko.mapping.fromJS的问题,其中涉及Date对象。

当我使用ko.mapping.fromJS映射一个具有嵌套Date对象的对象时,Date对象被转换为...我不知道它是什么。

这是我的jsfiddle:http://jsfiddle.net/L5sgW/46/

HTML:

<p> <span>Name:</span>
 <span data-bind="text: IntroData.Name"></span>

    <button id="update" data-bind="click: Update">Update!</button>
</p>

javascipt的:

var ViewModel = function (data) {
    var me = this;
    ko.mapping.fromJS(data, {}, me);

    me.Update = function () {
        alert(stuff2.IntroData.TestDate.toString('yyyy-MM-dd'));
        ko.mapping.fromJS(stuff2, {}, me);
        alert(me.IntroData.TestDate.toString('yyyy-MM-dd'));
    };

    return me;
};

var stuff = {
    IntroData: {
        Name: 'Test'
    }
};

var stuff2 = {
    IntroData: {
        TestDate: new Date('2013-09-01'),
        Name: 'Test2'
    }
};

window.viewModel = ko.mapping.fromJS(new ViewModel(stuff));
ko.applyBindings(window.viewModel);

点击“更新!”后按钮“Stuff2.IntroData.TestDate”显示在警报中。然后发生映射。当“me.IntroData.TestDate”的警报发生时,它会导致:“function d(){if(0

为什么不保留日期值?我该如何保存它?

1 个答案:

答案 0 :(得分:0)

:)

请记住,您需要使用括号来获取TestDate的属性 -

http://jsfiddle.net/L5sgW/47/

alert(me.IntroData.TestDate().toString('yyyy-MM-dd'));

这是我改变的唯一一条线。