小编Cod*_*gue的帖子

如何将DateTime转换为自1970年以来的秒数?

我正在尝试将C#DateTime变量转换为Unix时间,即自1970年1月1日以来的秒数.看起来DateTime实际上是自0001年1月1日以来的"滴答"数量.

我目前的想法是从我的DateTime中减去1970年1月1日这样:

TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0));
return span.TotalSeconds;
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

c# datetime

111
推荐指数
4
解决办法
15万
查看次数

推迟执行ES6模板文字

我正在使用新的ES6模板文字功能,我头脑中的第一件事是String.format用于Javascript,所以我开始实现原型:

String.prototype.format = function() {
  var self = this;
  arguments.forEach(function(val,idx) {
    self["p"+idx] = val;
  });
  return this.toString();
};
console.log(`Hello, ${p0}. This is a ${p1}`.format("world", "test"));
Run Code Online (Sandbox Code Playgroud)

ES6Fiddle

但是,模板文字传递给我的原型方法之前会被评估.有没有什么办法可以编写上面的代码来推迟结果,直到我动态创建元素?

javascript ecmascript-6 template-literals

51
推荐指数
2
解决办法
7888
查看次数

evaluateJavascript如何工作?

我正在尝试在Android 4.4中使用新的evaluateJavascript方法,但我得到的所有内容都是null结果:

webView1.evaluateJavascript("return \"test\";", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String s) {
        Log.d("LogName", s); // Log is written, but s is always null
    }
});
Run Code Online (Sandbox Code Playgroud)

如何将结果返回此方法?

更新:更多信息:

  1. 我有INTERNET权限集
  2. 我有 setJavascriptEnabled(true);
  3. 试过撇号字符串:return 'test';,
  4. 试过JS对象: return { test: 'this' }
  5. console.log('test'); 正在执行罚款.
  6. 按照以下方式设置targetSdkVersion为19:如果您的应用使用WebView

设备: Nexus 7和Nexus 5(股票)

android android-webview android-4.4-kitkat

45
推荐指数
5
解决办法
8万
查看次数

if子句中的多个条件

如果我有一个需要满足这些要求的if语句:

if(cave > 0 && training > 0 && mobility > 0 && sleep > 0)
Run Code Online (Sandbox Code Playgroud)

有没有办法说它们都大于零?只是为了更有效的DRY代码?

就像是:

if(cave, training, mobility, sleep > 0)
Run Code Online (Sandbox Code Playgroud)

javascript if-statement

41
推荐指数
4
解决办法
4990
查看次数

JSHint Gulp到错误窗口VS2015

如何在使用Gulp时将JSHint 的输出显示在Visual Studio 2015的错误列表中,而不是仅输出到Task Runner?

我已经尝试过这个软件包,但除了格式化Gulp输出略有不同之外,似乎没有做任何事情.

这是我的gulpfile.js:

gulp.task('default', function () {
    gulp.src(["Scripts/**/*.js"])
        .pipe(jshint(".jshintrc"))
        .pipe(jshint.reporter("jshint-visual-studio"));
});
Run Code Online (Sandbox Code Playgroud)

实际输出(在任务运行窗口中):

实际输出

首选输出(在错误列表中):

首选输出

请注意:我正在使用Visual Studio 2015,因此Web Essentials不再是JSHint的选项,因为功能已被删除.

jshint gulp visual-studio-2015

32
推荐指数
1
解决办法
4538
查看次数

使用Object.assign和Object.create进行继承

我通常沿着以下行实现继承.

function Animal () { this.x = 0; this.y = 0;}

Animal.prototype.locate = function() { 
  console.log(this.x, this.y);
  return this;
};
Animal.prototype.move = function(x, y) {
  this.x = this.x + x;
  this.y = this.y + y; 
  return this;
}


function Duck () {
    Animal.call(this);
}

Duck.prototype = new Animal();
Duck.prototype.constructor = Duck;
Duck.prototype.speak = function () {
    console.log("quack");
    return this;
}

var daffy = new Duck();

daffy.move(6, 7).locate().speak();
Run Code Online (Sandbox Code Playgroud)

我已经阅读了Eric Elliott的这篇文章,如果我理解正确,我可以使用Object.createObject.assign不是?它真的那么简单吗?

var animal = {
   x …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

28
推荐指数
2
解决办法
2万
查看次数

AJAX将没有表单的ValidateAntiForgeryToken发布到MVC操作方法

我一直在寻找如何在SO上做到这一点的例子,据我所知,我已经尝试了所有可以找到但迄今为止没有成功的例子.我已经尝试将一些实现改为我的场景,但迄今为止也失败了.

我在_layout.cshtml的页面上有这个,所以我总是有一个令牌:

<form id="__AjaxAntiForgeryForm" action="#" method="post"> @Html.AntiForgeryToken()</form>
Run Code Online (Sandbox Code Playgroud)

我的JavaScript utils文件中也有这个方法:

AddAntiForgeryToken = function (data) {
    data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
    return data;
};
Run Code Online (Sandbox Code Playgroud)

这一切都按预期工作,我得到一个防伪标记.我的实际发布代码是:

myPage.saveData = function() {
    var saveUrl = '/exercises/PostData';

    var myData = JSON.stringify(myPage.contextsArrays);

    $.ajax({
        type: 'POST',
        async: false,
        url: saveUrl,
        data: AddAntiForgeryToken({ myResults: myData }),
        success: function () {
            alert('saved');
        },
        dataType: 'json',
        contentType: "application/json; charset=utf-8"
    });
};
Run Code Online (Sandbox Code Playgroud)

我的动作方法如下所示:

    [HttpPost, ValidateAntiForgeryToken, JsonExceptionFilter]
    public JsonResult PostData(List<ResultsDc> myResults)
    {
        return Json(_apiClient.SubmitResults(myResults));
    }
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用我一直在尝试的各种实现,并且响应总是:

{"errorMessage":"The required anti-forgery form field \"__RequestVerificationToken\" is not …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery json

21
推荐指数
2
解决办法
2万
查看次数

Javascript选择文本突出显示概率

我有一个带有文本内容的html页面.在选择任何文本并按突出显示按钮时,我可以更改所选文本的样式以突出显示相同的文本.为了实现这个功能,我写了以下方法.

sel = window.getSelection();
var range = sel.getRangeAt(0);
var span = document.createElement('span');
span.className = "highlight" + color;
range.surroundContents(span);
Run Code Online (Sandbox Code Playgroud)

如果您选择没有html标记的文本,但是当文本中间有任何html标记时,它会正常工作

无法在'Range'上执行'surroundContents':Range已部分选择了非Text节点.

如何解决这个问题呢.是否可以为每个部分分别突出显示相同的内容(除以html标签)?

javascript getselection

20
推荐指数
4
解决办法
6201
查看次数

如何在SelectMany中使用async lambda?

我在尝试使用asynclambda 时遇到以下错误IEnumerable.SelectMany:

var result = myEnumerable.SelectMany(async (c) => await Functions.GetDataAsync(c.Id));
Run Code Online (Sandbox Code Playgroud)

无法从用法推断出方法'IEnumerable System.Linq.Enumerable.SelectMany(此IEnumerable,Func>)'的类型参数.尝试显式指定类型参数

在哪里GetDataAsync定义为:

public interface IFunctions {
    Task<IEnumerable<DataItem>> GetDataAsync(string itemId);
}

public class Functions : IFunctions {
    public async Task<IEnumerable<DataItem>> GetDataAsync(string itemId) {
        // return await httpCall();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想因为我的GetDataAsync方法实际上返回了一个Task<IEnumerable<T>>.但为什么Select工作,肯定它应该抛出相同的错误?

var result = myEnumerable.Select(async (c) => await Functions.GetDataAsync(c.Id));
Run Code Online (Sandbox Code Playgroud)

有没有办法解决?

c# linq lambda linq-to-objects

19
推荐指数
4
解决办法
7327
查看次数

如何将{%captured%}变量从视图传递到Jekyll/Liquid中的布局?

我正在尝试在Jekyll重建一个博客,我已经找到了一个简单的任务.

如果我有以下模板集:

default.html中:

{{ head }}

{{ content }}
Run Code Online (Sandbox Code Playgroud)

frontpage.html:

---
layout: default
---

{% capture head %}
  Frontpage
{% end %}

{{ content }}
Run Code Online (Sandbox Code Playgroud)

index.html的:

---
layout: frontpage
---

Other stuff
Run Code Online (Sandbox Code Playgroud)

我当时希望{% capture head %}将变量传递给布局.但似乎只有Front Matter的变量实际上被传递为page.variable_name.

有没有办法将capture-d var 传递给Jekyll的布局?

猜猜我可以制作2种不同的布局frontpage,normal_page这将取代布局中的整个{{head}}{{content}}块.但这就像html的两倍,所以capture如果可能的话我宁愿解决它.

liquid-layout liquid jekyll jekyll-extensions

18
推荐指数
2
解决办法
3830
查看次数