我到处寻找如何捕获笔记本电脑的触摸板输入,但我似乎无法找到任何Chrome扩展/ JavaScript.
问题:对于笔记本电脑上的触摸板,如何捕获手指的数量(未点击,只是向下并可能像使用鼠标一样移动),相应的x,y坐标以及相应的向上事件?
澄清:
MVC 6引入了Tag Helpers作为@ Html.EditorFor的更好替代品.可以创建自定义编辑器模板.也可以创建自定义Tag Helper.
但是,在创建Tag Helper时,需要通过C#代码(使用TagBuilder等)创建HTML.对于复杂的Tag Helpers,它不如使用Razor语法那么方便.
有没有什么方法可以让我从Razor页面创建自定义Tag Helper?
我一直在对window.document对象进行一些研究,以确保我的一个JavaScript解决方案是可靠的.是否存在window.document对象为null或未定义的情况?
为了便于讨论,这里是一段不相关的示例代码.是否有任何情况下这段代码会失败(又称抛出异常)?
$(document).ready(function() {
var PageLoaded = (window.document.readyState === "complete");
});
Run Code Online (Sandbox Code Playgroud) 有没有办法创建默认的接口对象?
例:
interface myInterface {
A: string;
B: string;
C: number;
D: CustomType; // A custom class
}
Run Code Online (Sandbox Code Playgroud)
通常,您可以通过以下方式创建此接口的对象:
var myObj: myInterface = {
A: "",
B: "",
C: 0,
D: null
}
Run Code Online (Sandbox Code Playgroud)
然而,如果有一些语法糖就像这样做会很好:
var myObj = new myInterface;
// OR
var myObj = default(myInterface);
Run Code Online (Sandbox Code Playgroud)
根据我的研究,我没有找到办法做到这一点; 但我希望我错过了一些东西.
我正在尝试在我的自动git部署中包含TypeScript文件,这样我就可以展示我正在构建的框架的代码.但是,每当我部署到azurewebsites时,部署都不包含TypeScript文件.
有问题的网站:http://endgate-samples.azurewebsites.net/Samples/AnimatedSprites/
我尝试过的:
通过将TypeScript属性设置为"始终复制",将所有TypeScript文件复制到输出文件夹.这个问题是我需要更改对所有文件的引用(不想这样做).
MSBuild管道.这适用于文件系统部署,但不适用于Web部署... https://github.com/NTaylorMullen/EndGate/blob/master/EndGate/samples/EndGate.Core.JS.Samples/EndGate.Core.JS.Samples.csproj #L896-L909.
手动发布到FTP端点(像魅力一样工作),但不是自动的.还需要msbuild管道(#2)
我做错了什么或我能做什么(我还没试过)让我的TypeScript文件自动部署?
azure azure-deployment azure-web-sites azure-git-deployment typescript
首先,这个问题首先出现在使用Three.js之后,我尝试/尝试为我自己的库构建接口.
无论如何,让我们说我们有JS代码:
var foo = new THREE.Vector3(0,0,0);
Run Code Online (Sandbox Code Playgroud)
在TypeScript中,您可以将THREE对象表示为:
interface IThreeJS {
Vector3(x: number, y: number, z: number): any;
}
declare var THREE: IThreeJS;
Run Code Online (Sandbox Code Playgroud)
但是你可以看到我们从Vector3返回':any'.如果我创建一个IVector3接口并尝试执行'new THREE.Vector3(0,0,0):IVector3',我们会得到一个'关于构造函数的有效的新表达式'.因此必须返回'任何'
现在唯一的选择是让IThreeJS的Vector3对象返回'any'并执行:
var foo: IVector3 = new THREE.Vector3(0,0,0);
Run Code Online (Sandbox Code Playgroud)
那么,无论如何让我的IThreeJS接口的Vector3方法有一个构造函数并返回一个IVector3?
我一起使用TypeScript和SignalR,并且我正在尝试为生成的SignalR类定义静态类型.如果我做这样的事情,它的工作原理:
///<reference path="../Scripts/jquery-1.8.d.ts" />
///<reference path="../Scripts/signalr-1.0.d.ts" />
interface SignalR {
roomHub: Service.RoomHub;
}
module Service {
export var roomHub = $.connection.roomHub;
export interface RoomHub { }
}
Run Code Online (Sandbox Code Playgroud)
当然$.connection
是类型SignalR
,它在文件"signalr-1.0.d.ts"中定义,并在上面的文件中扩展.
但是,我需要能够Service
从其他文件引用该模块,因此我需要在模块和接口中添加"export"关键字,即:
///<reference path="../Scripts/jquery-1.8.d.ts" />
///<reference path="../Scripts/signalr-1.0.d.ts" />
export interface SignalR {
roomHub: Service.RoomHub;
}
export module Service {
// Error here: "The property 'roomHub' does not exist on type SignalR."
export var roomHub = $.connection.roomHub;
export interface RoomHub { }
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我得到一条红色的小波浪线$.connection.roomHub
,并且编译器返回错误,"属性'roomHub'在SignalR类型上不存在."
我当然不了解TypeScript的所有内容,但这对我来说似乎并不合适.我遇到了编译器错误吗?或者有不同的方法来做到这一点?
设置
让我们说我们有两个文件,A.ts和Bdts.现在在A里面我们有:
class A implements B{...}
Run Code Online (Sandbox Code Playgroud)
现在假设我想将所有的打字稿文件合并到一个单一的定义文件中.我知道如何执行此操作的唯一方法是创建.js文件,然后创建生成的.d.ts文件.
因此我们做:
tsc --out foo.js --declaration B.d.ts A.ts
Run Code Online (Sandbox Code Playgroud)
我们得到foo.js和foo.d.ts.
现在唯一的问题是foo.d.ts只包含A.ts的定义而不包含Bdts的定义.因此,要使我们生成的foo.d.ts实际工作而不抛出错误,我们需要添加对Bdts的手动引用或者我们需要将Bdts的全部内容复制并粘贴到foo.d.ts中.
两种解决方案都相当难看.那么有没有办法通过typescript编译器创建一个单一的声明文件,该编译器也将包括用户创建的接口?我肯定错过了什么...