小编Al *_* R.的帖子

使用D3的projection.stream()的正确方法是什么?

所以我正在尝试一下D3's geo stream API,事情感觉有点模糊.我一直在阅读这里的文档:

https://github.com/mbostock/d3/wiki/Geo-Streams

我遇到的一个困惑是流转换的正确实现.假设我创建了一个:

//a stream transform that applies a simple translate [20,5]:
var transform = d3.geo.transform({
    point:function(){this.stream.point(x+20,y+5)}
}) 
Run Code Online (Sandbox Code Playgroud)

根据文档,this.stream引用"包装流".但是什么是流,真的吗?从我可以收集到的,它更多的是一个过程而不是显式数据结构 - 一系列数据和函数调用来转换数据.上面的语法似乎表明包装流只是包含" 流监听器 " 的对象

继续,我可以使用投影方法应用流变换:

//a path generator with the transform applied using the projection() method
var path = d3.geo.path().projection(transform);
Run Code Online (Sandbox Code Playgroud)

虽然我不太了解底层的机制,但效果似乎相对简单:路径生成器的底层转换函数使用转换后的x,y参数调用.

对于我的用例,我发现这没有用,特别是因为我的输入数据尚未投影.我想首先使用投影来转换数据,然后转换那些输出的坐标.为此,是否存在分层变换的一般模式?

我看到它D3确实提供了projection.stream(listener)模式,它在应用监听器之前首先应用了投影变换,但我不确定如何实现它.听众的论点应该是什么?这是一个例子:http://jsfiddle.net/kv7yn8rw/2/.

任何指导将不胜感激!

geo d3.js d3.geo

26
推荐指数
1
解决办法
1421
查看次数

从具有隔离范围的Angular指令访问自定义筛选器

我已经定义了一个自定义过滤器和一个带有隔离范围的指令,当我没有将它注入指令模块时,我无法弄清楚为什么该指令可以访问自定义过滤器(我已将它注入到应用程序模块中) - 见例子).

过滤器的范围规则是否与其他范围属性不同?或者这是在考虑过滤器时使用的错误框架?

这里的工作示例:http://jsbin.com/IRogUxA/6/edit?html,js,output

提前致谢!

angularjs angularjs-directive angularjs-scope angularjs-filter

9
推荐指数
1
解决办法
1万
查看次数

如何正确使用 Object.setPrototypeOf()

所以我一直在了解 JavaScript 的一些新特性,并且一直在阅读 Object.setPrototypeOf()。我从MDN 中遇到了这段代码,它处理从常规对象的继承。但我对他们在这里如何使用 Object.setPrototypeOf() 感到困惑。我希望他们写

Object.setPrototypeOf(Dog, Animal) 
Run Code Online (Sandbox Code Playgroud)

与下面的操作相反。他们为什么这样写?

var Animal = {
   speak() {
     console.log(this.name + ' makes a noise.');
   }
};

class Dog {
   constructor(name) {
   this.name = name;
  }
}

Object.setPrototypeOf(Dog.prototype, Animal);// If you do not do this you will get a TypeError when you invoke speak

var d = new Dog('Mitzie');
d.speak(); // Mitzie makes a noise.
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

9
推荐指数
1
解决办法
1万
查看次数

为什么操纵up的人报告“ UnhandledPromiseRejectionWarning:错误:导航失败,因为浏览器已断开连接!”?

我有一个简单的node.js脚本来捕获一些网页的屏幕截图。看来我在使用async / await的过程中被绊倒了,但我不知道在哪里。我目前正在使用puppeteer v1.11.0。

const puppeteer = require('puppeteer');

//a list of sites to screenshot
const papers =
{
     nytimes: "https://www.nytimes.com/",
     wapo: "https://www.washingtonpost.com/"
};

//launch puppeteer, do everything in .then() handler
puppeteer.launch({devtools:false}).then(function(browser){

//create a load_page function that returns a promise which resolves when screenshot is taken
async function load_page(paper){

    const url = papers[paper];

    return new Promise(async function(resolve, reject){

        const page = await browser.newPage();
        await page.setViewport({width:1024, height: 768});

        //screenshot on first console message
        page.once("console", async console_msg => {        
            await page.pdf({path: paper + …
Run Code Online (Sandbox Code Playgroud)

node.js google-chrome-headless puppeteer

7
推荐指数
2
解决办法
6123
查看次数

在悬停时将<path>带到前面(当被其他元素遮挡时)

今天早上我正在看NYTimes关于国家补贴的互动,并注意到即使一个国家被一个点遮挡,它也会在悬停时被提出.

例如,覆盖马萨诸塞州的点也部分覆盖了新罕布什尔州,但是当你进入新罕布什尔州的覆盖部分时,新罕布什尔州就会被提出来.

你觉得他们怎么做到这一点?点基于它们在DOM中的顺序位于状态轮廓的前面.我认为在所有事情的基础上可能会有第二组状态轮廓,听取会触发底层形状的鼠标悬停,但事实似乎并非如此.

我需要在我正在处理的应用程序中实现类似的功能,并对使用SVG元素的优雅方式感到好奇.

谢谢.

javascript svg d3.js

6
推荐指数
1
解决办法
2054
查看次数

作为函数参数传递的匿名函数的范围

鉴于以下代码,我应该在警报中看到什么?

var a = 100;
function afunc(infunc){
  a = 10;
  infunc.call();
}

afunc(function(){alert(a)});
Run Code Online (Sandbox Code Playgroud)

我最初的想法是我的浏览器应该提醒100,因为变量a = 100将作为作为afunc参数传递的匿名函数的范围.但是这假设匿名函数实际上是在全局上下文中定义的.显然情况并非如此,因为浏览器提醒10.那么为什么在范围链中a = 10之前a = 10?

谢谢!

javascript scope

5
推荐指数
2
解决办法
119
查看次数

使用wget从ftp服务器下载选择目录

我试图了解如何使用wget从一堆不同的ftp网站下载特定目录,以及来自美国政府的经济数据。

作为一个简单的例子,我知道我可以使用以下命令下载整个目录:

wget  --timestamping  --recursive --no-parent ftp://ftp.bls.gov/pub/special.requests/cew/2013/county/
Run Code Online (Sandbox Code Playgroud)

但是我设想运行更复杂的下载,我可能希望将下载限制在少数几个目录中。所以我一直在看--include选项。但是我不太了解它是如何工作的。具体来说,为什么这行不通:

wget --timestamping --recursive -I /pub/special.requests/cew/2013/county/ ftp://ftp.bls.gov/pub/special.requests/cew/
Run Code Online (Sandbox Code Playgroud)

从文件下载的意义上讲,以下代码确实有效,但是下载的方式超出了我的需要(2013目录中的所有内容,而县目录中的所有内容):

wget --timestamping --recursive -I /pub/special.requests/cew/2013/ ftp://ftp.bls.gov/pub/special.requests/cew/
Run Code Online (Sandbox Code Playgroud)

我无法判断我是否不了解wget,还是我的问题是关于ftp服务器结构的更基本的问题。

谢谢您的帮助!

unix linux ftp ubuntu wget

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

Raphael.js在哪里存储使用element.data()方法设置的元素数据?

我在画布上有一堆Raphael元素对象,并且每个对象都有相关数据,如下所示:

element.data('dataVal',x);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想知道x存储在哪里.我一直在浏览Raphael.js的源代码并且已经注意到了这一部分:

elproto.data = function (key, value) {
    var data = eldata[this.id] = eldata[this.id] || {};
    if (arguments.length == 1) {
        if (R.is(key, "object")) {
            for (var i in key) if (key[has](i)) {
                this.data(i, key[i]);
            }
            return this;
        }
        eve("raphael.data.get." + this.id, this, data[key], key);
        return data[key];
    }
    data[key] = value;
    eve("raphael.data.set." + this.id, this, value, key);
    return this;
};
Run Code Online (Sandbox Code Playgroud)

所以,我的预感是'eldata'是Raphael纸质对象的属性,'eldata'包含每个Raphael元素的对象,并且在这些对象中存储数据.

从本质上讲,我的问题是:一旦我创建了Raphael画布,添加了元素,并向这些元素添加了数据,我将如何访问数据(不使用Raphael函数)?我尝试过简单的东西,比如寻找R.eldata(其中R是拉斐尔画布),但这并不富有成效.

非常感谢您的帮助!

javascript raphael

4
推荐指数
1
解决办法
2026
查看次数

从另一个对象的单击事件中手动触发jQuery单击事件

我正在开发一个小的web应用程序,点击一个div(称之为"A")需要改变自身和另一个div的位置(称之为"B"),反之亦然.

功能将是这样的:

Click 'A' {
  A is moved some number of pixels closer to the mouse position (making use of jQuery's .pageX and .pageY event object properties)
  B's click event is manually triggered, moving it some number of pixels closer to the mouse
}
Run Code Online (Sandbox Code Playgroud)

我想我只是将点击事件处理程序绑定到A和B.如果点击了A,我会手动触发B的点击事件(使用jQuery的.trigger(),反之亦然.不幸的是,手动触发一个对象的点击事件.其他对象的处理程序对我不起作用 - 例如在上面的例子中,当触发div B的click事件时,我无法检索pageX和pageY属性.

我在这里举了一个例子来说明这一点:http://jsfiddle.net/tZFNk/2/.

欢呼并提前感谢您的帮助.

jquery scope event-handling

3
推荐指数
1
解决办法
6546
查看次数

R的Format函数返回奇数结果

为什么

format(4444444444444444444,scientific=FALSE)
Run Code Online (Sandbox Code Playgroud)

返回"4444444444444444672"?

我认为它可能是一个整数精度的东西,但这个数字相对较小.谢谢!

我在Ubuntu Linux上运行R版3.0.0.

format precision integer r

2
推荐指数
1
解决办法
137
查看次数

Angular $ Scope服务:它是如何工作的?

我已经和Angular进行了几个星期的试验,并且有点担心我不理解$ scope服务所使用的魔力.我已经成功地编写了使用$ scope服务来更新模型/视图的控制器,并且我已经能够编写自己的指令来执行相同的操作.

太奇妙了!我只是不知道$ scope服务引擎盖下发生的事情.当我创建类似下面的内容时,当我对$ scope.newproperty进行赋值时实际发生了什么?我找不到任何特定于$ scope服务的文档.

module.controller("menu_ctrl",['$scope','$http',function($scope,$http){
    $scope.newproperty = "Bound to model!" //magic!
}]);
Run Code Online (Sandbox Code Playgroud)

此外,当我在一个指令(下面的例子)中创建一个新的链接函数时,我怎么能突然用变量访问范围呢?我假设使用$ scope或$ apply服务有一些魔力,但我只是猜测.这里的任何帮助将不胜感激.谢谢!

srvcs.directive('directiv', ['$http',function($http) {
   var returnObj = {
   link: function linkfn(scopeVar, instance, attr){
      console.log(scopeVar);
      scopeVar.newproperty = "Also bound to model!" //more magic!
      ...
      ...
      }
   };
   return returnObj;
 }]);
Run Code Online (Sandbox Code Playgroud)

javascript frameworks scope angularjs

2
推荐指数
1
解决办法
2524
查看次数

JavaScript (ES6) 中的原生 Promise 是否有默认的 onFulfilled 处理程序?

我正在审查 ES6 中 Promise 的实现,并且想知道以下示例中的行为。在此示例中,我没有立即使用 then() 方法注册处理程序。这样做(在 Chrome 43 中)会在 Promise 被拒绝时在控制台中记录错误,但处理程序仍会执行。

我的假设是我收到错误,因为在附加处理程序之前承诺被拒绝(由于 setTimeout)。但按照这个逻辑,当承诺被解决时,Chrome 不应该也记录一个错误吗?这里发生了什么?

var par = document.querySelector('p');

var P = new Promise(function(resolve, reject){
    var v = Math.random();
    if(v < 0.5){resolve(v)}
    else{reject(v)}
});


//wait to attach handlers
setTimeout(function(){
    var n = P.then(
        function(v){
            par.innerHTML = "Good, "+v+" is less than 0.5.";
        },
        function(v){
            par.innerHTML = "Uh oh, "+v+" is greater than or equal to 0.5.";
        }
    )
},1000);
Run Code Online (Sandbox Code Playgroud)
<p></p>
Run Code Online (Sandbox Code Playgroud)

javascript promise ecmascript-6

2
推荐指数
1
解决办法
565
查看次数

在tidyverse中,类"tbl"和"tbl_df"的对象之间有什么区别?

创建一个tibble时,

tbl <- tibble(A=1:5, B=6:10)
Run Code Online (Sandbox Code Playgroud)

的结果

class(tbl)
Run Code Online (Sandbox Code Playgroud)

[1] "tbl_df"     "tbl"        "data.frame"
Run Code Online (Sandbox Code Playgroud)

我习惯看到这个,因为我使用dplyr相当多.但是什么时候对象只是一个"tbl"(而不是"tbl_df"),反之亦然?我想知道更多关于差异的信息,如果有的话.

任何文件将不胜感激!

r dplyr tibble

0
推荐指数
1
解决办法
362
查看次数