小编Chr*_*ris的帖子

如何使用Rx在Angular 2中实现可拖动的div

我一直在尝试使用Angular 2来使用可拖动的div工作.我使用angular2-examples repo中的这个示例作为起点,只是真正调整代码来解释toRx()方法的删除.代码有效,但它不考虑mouseout事件.这意味着如果我单击一个Draggable div,然后慢慢移动鼠标,div将随鼠标移动.但是如果我移动鼠标的速度太快,mouseout则会发送一个mousemove事件而不是一个事件,拖动停止.

在鼠标移动到目前为止mouseout触发事件后,如何保持拖动?我已经尝试将mouseout事件流与mousemove一个事件流合并,以便将mouseout事件视为一个事件mousemove,但这不起作用.

我正在使用Angular 2.0.0-beta.12.

import {Component, Directive, HostListener, EventEmitter, ElementRef, OnInit} from 'angular2/core';
import {map, merge} from 'rxjs/Rx';

@Directive({
    selector: '[draggable]'
})
export class Draggable implements OnInit {

    mouseup = new EventEmitter();
    mousedown = new EventEmitter();
    mousemove = new EventEmitter();
    mouseout = new EventEmitter();

    @HostListener('mouseup', ['$event'])
    onMouseup(event) {
        this.mouseup.emit(event);
    }

    @HostListener('mousedown', ['$event'])
    onMousedown(event) …
Run Code Online (Sandbox Code Playgroud)

angular2-directives rxjs5 angular

18
推荐指数
2
解决办法
3万
查看次数

git rebase并保留所有子分支

我正在尝试将CVS存储库导入git.不幸的是,我们一直在使用一种从CVS仓库创建版本的非常古老的方法,它不涉及任何实际的CVS分支或标记,而是将这些信息保存在单独的系统中.因此,几乎所有的开发都发生在CVS主干上.因此,可以在历史的早期添加一个文件,但不会在6个月内成为发布的一部分.

我想做的是将这个CVS repo导入git,并使用rebasing将这些提交移动到开发分支.我确实有一些来自CVS的分支,所以我真的想移动所有分支.

说我有这个:

                  F---G---H topic
                 /
A---B---C---D---E---I---J master
Run Code Online (Sandbox Code Playgroud)

B是我想要移动到自己的分支的提交.我希望结果看起来像这样:

                F`---G`---H` topic
               /
A---C`---D`---E`---I`---J` master
 \
  B some_unfinished_feature
Run Code Online (Sandbox Code Playgroud)

但是变基只会master导致:

git checkout -b some_unfinished_feature B
git rebase --onto A B master

A---C`---D`---E`---I`---J` master
 \
  \               F---G---H topic
   \             /
    B---C---D---E
     \-some_unfinished_feature
Run Code Online (Sandbox Code Playgroud)

我能得到git的变基topicE'一个衍合命令?我可能有很多分支,我想转移到相应的新提交.或者有没有办法让我可以得到E和之间的映射E'

git

11
推荐指数
1
解决办法
1323
查看次数

执行运算符重载时python是否强制类型?

我有以下代码:

a = str('5')
b = int(5)
a == b
# False
Run Code Online (Sandbox Code Playgroud)

但是,如果我创建一个子类int,并重新实现__cmp__:

class A(int):
    def __cmp__(self, other):
        return super(A, self).__cmp__(other)
a = str('5')
b = A(5)
a == b
# TypeError: A.__cmp__(x,y) requires y to be a 'A', not a 'str'
Run Code Online (Sandbox Code Playgroud)

为什么这两个不同?python运行时是否捕获由此引发的TypeError int.__cmp__(),并将其解释为False值?有人能指出我在2.x cpython源代码中显示这是如何工作的吗?

python

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

可以使用glob.has_magic吗?

我有一些代码,我想知道路径是否有shell通配符,这似乎是在中心位置定义的东西.我发现glob.has_magic()提供了这个(它只是一个正则表达式:) '[*?[]'.但是这个方法没有列在模块的__all__列表中,也没有出现在pydoc中.

我应该把这个正则表达式复制到我的代码中吗?(我不愿意)

在将来的python版本中是否存在删除此方法的风险,因为它没有出现在文档中?

python glob

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

如何在不影响主程序包的情况下对长包名称进行别名?

如果我有一个非常长的包名,我可以通过在符号表中创建一个条目来对该包进行别名:

BEGIN {
    # Make "Alias" be an alias for "Some::Really::Long::Package";
    *Alias:: = \*Some::Really::Long::Package::;
    # Equivalent to:
    # *main::Alias:: = \*Some::Really::Long::Package::;
}
Run Code Online (Sandbox Code Playgroud)

这就是Package::Alias你内心所做的事情.然而,这很糟糕,因为它与main包装混乱.如何使别名仅影响当前包,并且只能使用包中的别名?我尝试将别名定义更改为

*Short::Alias:: = \*Some::Really::Long::Package::;
Run Code Online (Sandbox Code Playgroud)

但后来我不得不使用Short::Alias->myMethod()而不是Alias->myMethod().

use strict;
use warnings;

package Some::Really::Long::Package;

sub myMethod {
    print "myMethod\n";
}

package Short;

BEGIN {
    # Make "Alias" be an alias for "Some::Really::Long::Package";
    *Short::Alias:: = \*Some::Really::Long::Package::;
}

# I want this to work
Alias->myMethod();

package main;

# I want this to not work
Alias->myMethod(); …
Run Code Online (Sandbox Code Playgroud)

perl perl-stash

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

标签 统计

python ×2

angular ×1

angular2-directives ×1

git ×1

glob ×1

perl ×1

perl-stash ×1

rxjs5 ×1