Knockout.js can';t更新属性并更改Breeze中其他属性的时区

Knockout.js can';t更新属性并更改Breeze中其他属性的时区,knockout.js,breeze,hottowel,Knockout.js,Breeze,Hottowel,在激活我的编辑视图页面时,我试图使用外键从不同的表中获取实体,但我认为这不是获取和更新实体的正确方法,它没有保存更新的属性“modification_date”,我面临的另一个问题是时间问题,因为我有一个属性“startDate”是datetime类型,因此当我将应用程序托管到某个VM时,它会显示比原始值多出+5:30的时间,因为数据库将该值存储在GMT+00:00中。我如何解决此问题? 我的问题是: 无论何时更新实体,“修改日期”都不保存当前日期的原因 当我的当前时间为GMT+5:30时,如何

在激活我的编辑视图页面时,我试图使用外键从不同的表中获取实体,但我认为这不是获取和更新实体的正确方法,它没有保存更新的属性“modification_date”,我面临的另一个问题是时间问题,因为我有一个属性“startDate”是datetime类型,因此当我将应用程序托管到某个VM时,它会显示比原始值多出+5:30的时间,因为数据库将该值存储在GMT+00:00中。我如何解决此问题? 我的问题是:

  • 无论何时更新实体,“修改日期”都不保存当前日期的原因
  • 当我的当前时间为GMT+5:30时,如何向客户端显示GMT+00:00的正确时间。同时编辑和从SqlServer获取数据

  • 请说明我们如何使用导航键访问另一个表,因为我正在做的是获得一个可观察的“作业”,并且存在不同的属性,另一个表是“作业计划”,因此我应该如何访问“作业计划”表下的属性startDate。因为目前我正在访问的类似于
    作业计划estValue[0]。startDate
    ,这可能不是获取实体的正确方法

  • 下面是我的一段代码:

     <div data-bind="with: job">
    <label>Start Date :</label>
                            <input data-bind="kendoDateTimePicker: $root.temp3" />
                            <input data-bind="value: job_Schedule._latestValue[0].startDate = $root.tempSD1, visible: false" />
         <input data-bind="value: modificationDate = $root.md, visible: false" >
    //I kept visible: false because modified date should be updated automatically
    // some more attributes................
    </div> 
    

    日期操纵对每种技术中的每一个人来说都是一个长期的挑战

    时区操作特别棘手,尤其是当客户端和服务器位于不同的时区时

    如果您可以确保在中创建和存储所有日期,那么问题就不会那么严重了。我认为您不希望完全依赖对
    new Date()
    的调用

    我建议你调查一下


    我不知道如何回答您关于导航到相关实体的问题,因为您没有提供有关所涉及的实体类型或它们之间关系的任何信息。这是一个单独的问题吗?或者您的导航属性和日期问题之间是否有联系?

    谢谢Ward,让我再次重新框定问题,我想问什么我不知道我得到的实体来自两个表“Job_Details”和“Job_Schedule”,其中Job_Schedule有一个外键“JobID”,在此基础上,我将两个表中的数据填充到“Job”observable中,这个observable包含我需要的所有内容。现在的问题是
    我是否使用正确的语法访问“Job”_计划“实体”
    ,因为我在视图中访问它,就像作业计划一样。\u最新值[0].startDate。如果有其他最佳方法,我准备遵循。为了获得更多参考,我发布了observable的图像,以便您能够清楚地了解填充到observable中的数据结构。请检查我用我的工作observable的图像更新了我的帖子什么是modificationDate?您为什么试图将其设置为In一个绑定表达式而不是JavaScript?那么如何在JavaScript中实现?因为“modificationDate”是数据库中的一列。
    vm.job.modificationDate(new Date())
    假设vm.job是一个Breeze实体,它有一个
    modificationDate
    属性。不,我们不能这样做,我已经尝试过了,它会显示错误
    加载路由模块失败(viewmodels/jobedit)。详细信息:vm.job.modificationDate不是一个函数
    啊,我看到vm.job是一个可观察的。因此它将是
    vm.job().modificationDate(新日期());
    vm.md = ko.dependentObservable(function () {
            var y = new Date();// should assign current to modification date but its not persisting the changes to database.
            return y;
            }, vm);
    
     <div data-bind="with: job">
    <label>Start Date :</label>
                            <input data-bind="kendoDateTimePicker: $root.temp3" />
                            <input data-bind="value: job_Schedule._latestValue[0].startDate = $root.tempSD1, visible: false" />
         <input data-bind="value: modificationDate = $root.md, visible: false" >
    //I kept visible: false because modified date should be updated automatically
    // some more attributes................
    </div> 
    
        vm.md = ko.dependentObservable(function () {
        var y = new Date();// should assign current to modification date but its not persisting the changes to database.
        return y;
        }, vm);
    
    vm.tempSD = ko.dependentObservable(function () {
        var y = ko.unwrap(this.tempx());// tempx containing the current value of startDate
        if (y === null || y === '""') { y = new Date(); }
        y = new Date(y);
        var utc = y.getTime() + (y.getTimezoneOffset() * 60000);
        temp3(new Date(utc));
        return new Date(utc);
    }, vm);
    
    vm.tempSD1 = ko.computed(function () {
        var y = vm.temp3();
        if (y === null || y === '""') {y = new Date();}
        y = new Date(y);
        var utc = y.getTime() - (y.getTimezoneOffset() * 60000);
        return new Date(utc);
    },vm);