小编Sta*_*cat的帖子

为什么事件监听器回调函数只在函数范围内工作?

我正在研究一个使用事件监听器的D3项目,每隔几毫秒就会调用一次事件监听器来更新/动画屏幕上圆圈的位置.

它从函数startForces()开始调用一次以激活D3力,然后我们将它传递给圆圈.

当回调函数(勾选)位于startForces()范围之外时,该函数似乎只调用一次,并且圆圈在页面上显示为静态.(见顶级代码)

但是,当回调函数(勾选)位于startForces()的范围内时,一切都按预期工作,并且圆圈显示为动画.(BOTTOM CODE CHUNK)

我试图理解为什么javascript以这种方式工作.为什么顶级代码不起作用,底部代码有效?

TL:DR

不工作的代码

var ticked = function(circles){
   circles.attr('cx', function(d) { return d.x })
   .attr('cy', function(d) { return d.y })
}

var startForces = function(data, circles) {
  simulation.nodes(data)
  .on('tick', ticked(circles))
}
Run Code Online (Sandbox Code Playgroud)

=====

工作代码

    var startForces = function(data, circles) {
      simulation.nodes(data)
      .on('tick', ticked)

    function ticked(){
      circles.attr('cx', function(d) { return d.x })
      .attr('cy', function(d) { return d.y })
    }
   }
Run Code Online (Sandbox Code Playgroud)

为什么不同?

javascript d3.js

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

Django 2.1+ 批量更新记录及其相关记录的数量?

我正在尝试使用表 B 中相关记录的计数来批量更新表 A 中的所有记录。

我想做这样的事情:

from django.db.models import Subquery, OuterRef, Count


table_b_subquery = TableB.objects.filter(a_id=OuterRef('id'))

TableA.objects.all().update(table_b_count=Count(Subquery(table_b_subquery)))
Run Code Online (Sandbox Code Playgroud)

这相当于这种非批量方法:

# Non-Bulk

for record in TableA.objects.all():
  record.table_b_count = record.table_b_set.count()
Run Code Online (Sandbox Code Playgroud)

我尝试批量方法时遇到的错误是:

*** django.core.exceptions.FieldError: Aggregate functions are not allowed in this query
Run Code Online (Sandbox Code Playgroud)

如何在批量更新中对相关记录进行看似简单的计数?理想情况下,我也想对表 B 的计数应用一个简单的字段过滤器。

python django postgresql

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

Docker 卷备份错误:Tar:MYCONTAINER_VOLUME:无法统计:没有这样的文件或目录

我正在尝试按照 docker 文档中的说明备份我的卷:https : //docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes

我正在运行带有卷路径的命令:

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/lib/docker/volumes/MYCONTAINER_VOLUME
Run Code Online (Sandbox Code Playgroud)

...并且还尝试仅使用我的卷名

docker run --rm --volumes-from MYCONTAINER -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar MYCONTAINER_VOLUME
Run Code Online (Sandbox Code Playgroud)

但无论我收到什么错误,如: tar: MYCONTAINER_VOLUME: Cannot stat: No such file or directory

该卷创建并链接到容器,docker-compose并使用该卷的本地驱动程序。

当我运行时,docker volume ls我得到:

DRIVER              VOLUME NAME

local               MYCONTAINER_VOLUME

Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?

docker

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

标签 统计

d3.js ×1

django ×1

docker ×1

javascript ×1

postgresql ×1

python ×1