关于Stack Overflow的第一个问题,请耐心等待!我是d3.js的新手,但一直对其他人用它能够完成的事情感到惊讶......而且我自己用它做出的一点点进展几乎令人惊讶!很明显,我不是在找东西,所以我希望这里善良的灵魂可以向我展示光明.
我的目的是创建一个可重用的javascript函数,它只执行以下操作:
我把http://bl.ocks.org/950642作为起点,因为这基本上是我想要创建的那种布局:

这是我的代码的样子:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="underscore-min.js"></script>
<script type="text/javascript" src="d3.v2.min.js"></script>
<style type="text/css">
.link { stroke: #ccc; }
.nodetext { pointer-events: none; font: 10px sans-serif; }
body { width:100%; height:100%; margin:none; padding:none; }
#graph { width:500px;height:500px; border:3px solid black;border-radius:12px; margin:auto; }
</style>
</head>
<body>
<div id="graph"></div>
</body>
<script type="text/javascript">
function myGraph(el) {
// Initialise the graph object
var graph = this.graph = {
"nodes":[{"name":"Cause"},{"name":"Effect"}],
"links":[{"source":0,"target":1}]
};
// Add and …Run Code Online (Sandbox Code Playgroud) 我肯定错过了Handlebars的工作方式.我需要根据变量的值调用不同的partial.目前,我发现这样做的唯一方法是:
<template name="base">
{{#if a}}{{> a}}{{/if}}
{{#if b}}{{> b}}{{/if}}
{{#if c}}{{> c}}{{/if}}
</template>
Run Code Online (Sandbox Code Playgroud)
并在相应的JS中:
Template.base.a = function () {
return (mode === "a");
}
Template.base.b = function () {
return (mode === "b");
}
Template.base.c = function () {
return (mode === "c");
}
Run Code Online (Sandbox Code Playgroud)
......这让我非常啰嗦.我真正想做的是:
<template name="base">
{{> {{mode}} }}
</template>
Run Code Online (Sandbox Code Playgroud)
换句话说,值mode将是被调用的partial的名称.
这似乎是一个非常常见的用例,但我在网上找不到任何这样的例子.我哪里出错了?
这是一个非常简单的问题,但我已经打了一个小时.我正在尝试执行以下操作:
现在,如果命名范围恰好覆盖多维区域(行和列),那么这很好:
foobar = Range("two_dimensional_range")
MsgBox foobar(1,1)
Run Code Online (Sandbox Code Playgroud)
但是,如果命名范围由单个维度(仅一列)数据组成,则会产生"下标超出范围"错误:
foobar = Range("one_dimensional_range")
MsgBox foobar(1)
Run Code Online (Sandbox Code Playgroud)
我已经证实foobar真的是一个阵列.我可以使用For Each ... Next迭代它.如果我调用Ubound(foobar),它会给我正确的大小.我只是无法直接访问它的单个元素!
我究竟做错了什么?