我正在尝试制作自定义发布日期,因为用户希望将其用作发布日期和排序。日期也将显示在页面上。
这就是我想要的:
我很绝望,我无法弄清楚如何做到这一点。
这是我到目前为止所尝试的内容:我找到了一个整洁的小插件,它显示用户在输入字段旁边的当前UTC时间,因此该人知道他们的UTC时间。我将其修改为始终在输入字段中输入当前日期:
var timer = setInterval(function () {
var date = $(".custom-date").val();
if (date === "") {
$(".custom-date").focus();
$(".custom-date").click();
$(".custom-date").trigger("click");
//the date has now been set on the input field
} else if (date !== "") {
var newDate = new Date(date);
var stringDate = newDate.getFullYear() + "-" + ('0' + (newDate.getMonth() + 1)).slice(-2) + "-" + ('0' + (newDate.getDate() - 1)).slice(-2) + " " + ('0' + (newDate.getHours() - offset)).slice(-2) + ":" + ('0' + newDate.getMinutes()).slice(-2) + ":" + ('0' + newDate.getSeconds()).slice(-2);
$(".custom-date").val(stringDate);
angular.element(".custom-date").scope().$apply(function () {
angular.element(".custom-date").scope().datetimePickerValue = stringDate;
});
clearInterval(timer);
}
}, 1000);
是的,这看起来很多......不,它不起作用。我在元素上执行焦点/单击/触发,因为这会自动将时间设置为用户的本地时间。然后我将其转换为UTC时间(偏移量是UTC时间偏移量)。然后我将日期应用到元素的范围,并在$ scope和视图中更新值(我实际上可以看到它)。
但是,当我点击保存并发布时,日期会被重置(数据库中的日期为空)。只有当我实际点击输入字段并选择新日期时才会实际更新它。我喜欢这种方法,因为我100%控制它,所以它可能吗?似乎在范围上设置新日期并不会触发实际的"新日期已被选中"。
或者我在这里有我的Razor代码:
//selection is all my elements/nodes
selection.OrderByDescending(x => x.GetProperty("publishDate") != null).ThenByDescending(x => x.GetPropertyValue("publishDate")).Where(x => x.GetPropertyValue<DateTime>("publishDate") < DateTime.UtcNow);
答案 0 :(得分:0)
显然在Angular事件被触发之前,我需要至少称之为:
$(".custom-date").trigger("click");
$(".custom-date").change();
所以我在设定新约会后就这样做了,现在它正常运作。