我在 Angular 2 组件中有一个 D3.js 代码,用 TypeScript 编写。
自然地,我倾向于以 OOP 方式包装东西,以便组件可以(例如)多次重用。
但是,我在将某些内容传递给事件处理程序时遇到了问题。
this.simulation = d3.forceSimulation()
...
.on("tick", this.onSimulationTick);
Run Code Online (Sandbox Code Playgroud)
onSimulationTick()
只能访问全局变量,d3.event
并且this
:
当指定的事件被调度时,每个监听器都会以 this 上下文作为模拟被调用。
全局变量不是一个选项,破坏了封装。我无法将任何内容附加到d3.event
,而且我不知道它们的上下文是什么意思。
在处理程序中,我想访问一些属于类成员的东西。所以最好是传递组件对象。
我怎样才能将任何东西传递给处理程序?我怎么能使用它的上下文?
也许我可以以某种方式使用 lambda,比如
.on("tick", () => onSimulationTick.that = this, onSimulationTick );
Run Code Online (Sandbox Code Playgroud)
这是缩短的组件代码:
@Component({
templateUrl: "dependencies-graph.component.html",
styleUrls: ["dependencies-graph.component.css"],
selector: 'wu-dependencies-graph',
})
export class DependenciesGraphComponent implements OnInit, OnChanges {
// Data
_dependencies: DependenciesData;
private jsonData;
// Selections
private zoomingGroup;
// Behaviors
private simulation;
private zoom;
private center: Point;
private initVisualisation() …
Run Code Online (Sandbox Code Playgroud) 我将基于Wicket的应用程序的.war文件部署到Jetty 7.0.2.问题是Jetty将类路径复制到临时目录,但只复制*.class,因此*.html不可用于类加载器,我得到错误:
WicketMessage:未找到组件'cz.dynawest.wicket.chat.ChatPage'的'html'类型标记.
将战争复制为扩展目录有帮助.不过,我想知道如何配置Jetty来复制一切.
而且,mvn jetty:run
我得到了同样的错误.
谢谢,Ondra
我正在用Java开发一个小型桌面应用程序.我遇到了一个需要从XML文件中读取数据的点,为此我使用的是Dom4j库.虽然编码我面临以下错误,任何人都可以指导我解决此错误:
public void FromXML(String sXMLFileURI)
{//Reads the XML File and Stroe Data in Calling Object
Document document = getDocument( sXMLFileURI );
String xPath = "myXpath";
List<Node> nodes = document.selectNodes( xPath );//This line gives the followiing error:
//error "incompatible types
//required: java.util.List<org.dom4j.Node>
//found: java.util.List<capture#1 of ? extends org.dom4j.Node>"
for (Node node : nodes)
{
//some processing here
}
}
Run Code Online (Sandbox Code Playgroud) 我已经建立了一个Jboss域环境,它由两个Jboss服务器组成,其中一个是主服务器,另一个是从属服务器。但是,当我尝试将简单的Java Web演示部署到服务器组中时,从属日志中出现以下错误:
[Server:server-one] 16:20:37,024 ERROR [org.jboss.as.controller] (pool-1-thread-2) Operation ("add") failed - address: ([("deployment" => "jspdemo.war")]) - failure description: "No deployment content with hash eeeabd6c922da77e90db743602e6d24ba5592ce2 is available in the deployment content repository."
Run Code Online (Sandbox Code Playgroud)
这是控制台管理的屏幕截图:
无论如何,我不是一个"命令行"的人.我在整个职业生涯中都是一个前端开发人员,几乎没有与命令行交互,而是尽可能地使用应用程序GUI,所以这对许多人来说可能是一个相当基本的问题.
尝试使用Git时,我遇到了一个小问题.我包含了-m
消息标志并尝试了类似于"示例添加功能"的消息,其中"添加"一词被"反引号符号"包围(不能在此处显示,因为这样做会显示单词作为代码,我不知道如何在这个编辑器中逃避它.
我收到了错误: -bash: add: command not found
我过去使用反引号多次围绕函数名称与Git没有任何问题.我假设这里有某种保留关键字,特别是Git或只是Linux中的命令行,但我想知道具体情况是什么,所以我可以理解将来如何避免它.
谢谢.
我正在编写一个Bash脚本,我试图找到一种方法让FFmpeg识别-force_key_frames
选项中的全局变量.该-force_key_frames
选项可以将正则表达式作为参数,允许每5秒强制一个关键帧等功能:
-force_key_frames 'expr:gte(t,n_forced*5)'
Run Code Online (Sandbox Code Playgroud)
这适用于每5秒强制一个关键帧,但我不知道如何每x秒强制一个关键帧,x是一个输入变量,来自用户得到的其余脚本.我正在尝试的确切的FFmpeg命令是:
ffmpeg -i "video.mp4" -vcodec: libx264 -b:v 500k \
-force_key_frames 'expr:gte(t,n_forced*${SEG_TIME})' -s:v 640x480 \
-r 29.97 -pix_fmt yuv420p -map 0 -f segment -segment_time ${SEG_TIME} \
-reset_timestamps 1 -y "output%01d.mp4"
Run Code Online (Sandbox Code Playgroud)
该变量$SEG_TIME
由脚本设置为5,但该-force_key_frames
选项中的正则表达式似乎不喜欢该$SEG_TIME
变量.
我想截取来自通过USB连接到PC的Android手机的短信.PC端的Java应用程序.
我应该从哪里开始?是双方的应用程序吗?或者是否有一些PC端lib?
我只找到了像SmsJ这样的串口访问技巧.