小编maa*_*nus的帖子

如何确定给定div中的某些内容是否具有焦点?

使用angularjs,我正在显示这样的2级列表

- first main item
  - first subitem of the first main item
  - second subitem of the first main item
  - AN EMPTY ITEM AS PLACEHOLDER TO ENTER THE NEXT SUBITEM
- second main item
  - first subitem of the second main item
  - second subitem of the second main item
  - AN EMPTY ITEM AS PLACEHOLDER TO ENTER THE NEXT SUBITEM
Run Code Online (Sandbox Code Playgroud)

为了节省空间,我只想在相应的任何东西div都有焦点的情况下展示PLACEHOLDER ,这样只有一个这样的占位符.我知道有ngFocus,但我更喜欢比创建大量事件处理程序更简单的东西.也许是这样的:

<div ng-focus-model="mainItem.hasFocus" ng-repeat="mainItem in list">
   ... main item line
   ... all …
Run Code Online (Sandbox Code Playgroud)

focus angularjs

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

显式Hibernate连接表

我有一个M:N relationsship喜欢这里,除了那有一些信息是与相关联的AuthorBook实体.所以我想,我不需要@JoinTable在所有的,应该建立一个class AuthorBook由一个链接到每个AuthorBook和附加信息,对不对?

我试过了

@Entity
public class AuthorBook {
    @Id @ManyToOne Author author;
    @Id @ManyToOne Book book;
    @LobOrWhatever AdditionalInformation additionalInformation;
}
Run Code Online (Sandbox Code Playgroud)

我遇到了问题(我不记得了).所以我介绍了一个@GeneratedId int id并更改了引用@NaturalId.这个作品大多良好,但好笑,它迫使我通过连接AuthorBookSession#byNaturalId这是没有意义的我(我有识别码与实体应取在一起).我也试过了

session.byNaturalId(AuthorBook.class)
     .using("author.id", someAuthorId)
     .using("book.id", someBookId)
     .load();
Run Code Online (Sandbox Code Playgroud)

但这被拒绝告诉我"author.id"不是自然的id(实际上这是真的,因为自然id是"作者",但它的"id"同样有效).

看着网络,我发现每个人都在这样的表中使用id而不是实体,所以我想知道我是不是在尝试一些不可能的东西....(或者是愚蠢的).

java many-to-many hibernate

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

安全的git rebase

很多时候,在处理一件事情时,我会发现一些不相关的代码中的丑陋,修复它并单独提交.通常,有多个这样的提交,因为我后来发现类似的问题.

最后,我重新定义(重新排序和压缩),以便提交更有意义.有时候,我会遇到合并冲突,有时候生成的工作树与变基前的工作树不同.

  • 即使没有冲突,也会出现这种差异吗?
  • 当差异发生时,有没有办法得到(巨大的闪烁)警告?

git rebase

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

如何确定拟合表行数

在我的angularjs应用程序中,我在(几乎)每个页面上显示一个"主表".这个表有数千个逻辑行,但只有几个物理行(因此它可以快速避免巨大的DOM开销).

物理行数与数据无关(即使没有逻辑行,我也会显示它们).我实现了表的滚动,我希望它完全适合窗口,因此不需要滚动页面.

为此,我需要知道适合多少行.每行的高度是固定的(使用height: 20px !IMPORTANToverflow: hidden).该表是页面上的最后一件事.所以在理论上,我所需要的只是

var t = $("main-table");
var extraHeight = $(window).height - t.position().top - t.height() - someReserve;
var extraRows = Math.floor(extraHeight) / normalRowHeight);
physicalRows.length += extraRows;
Run Code Online (Sandbox Code Playgroud)

问题是我不知道价值何时稳定下来.我开始physicalRows.length = 10执行上面的代码后,我应该得到正确的长度.但我不...所以我使用迭代它$timeout,它的工作原理.

但随着桌子的增长和随机收缩,它看起来不太好.例如,我得到以下长度:

10 -> 33 -> 31 -> 30 -> 30 (done)
Run Code Online (Sandbox Code Playgroud)

调整数字并没有帮助,即使加倍normalRowHeight也没有避免超调.我试图限制增长,以避免萎缩.当窗口滚动条暂时显示时,收缩看起来特别糟糕,使得正确的桌边向左和向后跳跃.但唯一有效的是

extraRows = Math.max(extraRows,1);

随着桌子逐渐增长,这看起来很糟糕.没有它,我偶尔会得到一个类似的序列

10 -> 33 -> 56 -> 36 -> 31 -> 30 -> 30 (done)
Run Code Online (Sandbox Code Playgroud)

增加到56来自HTML在迭代之间没有更新.

我能做什么?有没有办法找出尺寸合适的时候?

解决方案摘要

我介绍了迭代计算,因为直接计算不正常.问题有多种原因:

  • 行高不是完全恒定的,这导致需要多次迭代.
  • 我正在听窗户大小和桌子的位置和大小.有一些去抖,但它分别适用于每个事件源.有时两个事件在同一个摘要迭代中离开(即,在表可以调整大小之前),这导致了序列10 -> …

jquery html-table angularjs

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

保留单独的keydown事件可用于焦点后代

我有一个(自制)表,有几个物理行和许多逻辑行,我想用键盘滚动(也).如果一个后代被聚焦,它理解了键,我希望事件由后代处理并被我的表忽略.

也许代码说清楚了:

scroll.keydown = function(e) {
    if (e.shiftKey | e.controlKey | e.altKey) return;
    var isText = e.target.type === "text";
    var K = $.ui.keyCode;
    switch (e.keyCode) {
    case K.HOME: if (isText) return; scroll.move(-1000000); break;
    case K.END: if (isText) return; scroll.move(+1000000); break;
    case K.PAGE_UP: scroll.move(-10); break;
    case K.PAGE_DOWN: scroll.move(+10); break;
    case K.UP: scroll.move(-1); break;
    case K.DOWN: scroll.move(+1); break;
    default: return;
    }
    e.preventDefault();
};


<table tabindex="0" ng-keydown="scroll.keydown($event)" ...>
      ... <input ...>
Run Code Online (Sandbox Code Playgroud)

它工作得很完美,但它非常愚蠢:表知道它包含input元素,并且它知道这样的元素可以利用例如HOME密钥,所以它做了一个测试,不管它.

那是非常错的.现在,我添加了一个select …

html javascript jquery keydown angularjs

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

可靠地跟踪Hibernate所做的更改

我正在使用PostUpdateEventListener注册的via

registry.appendListeners(EventType.POST_COMMIT_UPDATE, listener)
Run Code Online (Sandbox Code Playgroud)

以及其他一些听众,以便跟踪Hibernate所做的更改.这很好用,但是,我看到一个问题:

比方说,对于跟踪一些amount通过id,我简单地执行

 amountByIdConcurrentMap.put(id, amount);
Run Code Online (Sandbox Code Playgroud)

在每一个POST_COMMIT_UPDATE(让我们忽略其他操作).问题是这个调用在提交后的某个时间发生.因此,两个提交一个接一个地写一个相同的实体,我可以以错误的顺序接收事件,最终amount存储旧的.

  • 这真的有可能还是以某种方式同步操作?
  • 有没有办法如何预防或至少检测到这种情况?

java concurrency hibernate transactions

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

以编程方式调用组织导入并随后保存文件

我在做什么基本上是:

async function doItAll(ownEdits: Array<TextEdit>) {
    const editor: TextEditor = await getEditor();
    applyOwnChanges(editor, ownEdits);
    await commands.executeCommand('editor.action.organizeImports',
        editor.document.uri.path);
    await editor.document.save();
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但完成之前save发生,当导入被修改时,我最终得到一个肮脏的编辑器。 organizeImports

我tripple 检查我没有忘记await关键字,但它的工作原理就像它不存在一样。

这可能是一个错误,或者我可能正在做或期待一些错误的事情。我是吗?

plugins async-await typescript visual-studio-code vscode-extensions

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

非静态内部类中的静态变量

首先我想问为什么Java禁止内部类中的静态字段?,但问题已经出现了.serialVersionUIDBozho的回答消除了我给予他们()的原因.但是,我仍然很好奇:

静态字段是仅在源代码中还是在类文件中禁止?

顺便说一句,这是一个令人信服的理由,为什么禁止这种行为还有待发明.在C中,即使在函数内部也允许使用静态变量.它们的寿命与任何其他静态变量相同,只是它们的可见性不同.同样适用于Java.

java static-members inner-classes

4
推荐指数
2
解决办法
6842
查看次数

访问枚举构造函数中的其他枚举

我需要类似以下的东西

enum EE {
    A("anything"),
    B("beta"),
    ...
    Z("zulu"),
    ALL,
    ;

    EE(String s) {
        this.s = s;
    }
    EE() {
        String s = "";
        for (EE ee : values()) { // PROBLEM HERE
            if (ee != ALL) s += " " + ee.s;
        }
        this.s = s;
    }
}
Run Code Online (Sandbox Code Playgroud)

创建时ALL我想访问枚举的其他成员.由于此时values()返回null,上述方法无效.使用A,, B... Z显式不编译.我完全理解为什么这个鸡蛋问题会发生,但我正在寻找一个很好的解决方法.

不,ALL从中删除EE不是一种选择.

java oop enums initialization

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

重定向到其他端口,保留其余所有端口

在服务器(嵌入式Jetty)上,我需要重定向到其他端口,而其他所有内容均保持不变,例如,从

http://com.example.myserver:1234/whatever?with=params#and-hash?and=whoknowswhat
Run Code Online (Sandbox Code Playgroud)

http://com.example.myserver:5678/whatever?with=params#and-hash?and=whoknowswhat
Run Code Online (Sandbox Code Playgroud)

看来我必须根据我不太了解的内容来组成结果URL:

  • 浏览器使用的服务器名称
  • URL的其余部分

java embedded-jetty http-redirect

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