小编Pav*_*cki的帖子

事件不适用于html5对象标记

似乎触发/在jquery事件上标准和自定义都不适用于对象标记.

这并不起作用:

var $test = $("<object>"); 
$test.on("test", function (){
  console.log("jquery test handler");
});
$test.trigger("test");
Run Code Online (Sandbox Code Playgroud)

虽然它适用于其他html标签(尝试div,视频等).

Vanilla js解决方案的工作原理:

var test = document.createElement("object");
test.addEventListener("testV", function(e) {
  console.log("vanilla test handler");
 });
var event = new CustomEvent("testV");
test.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

jQuery ver.1.11.1
测试:http://codepen.io/anon/pen/dPGoJg


问题:

  1. 我只有一个有这个错误的人还是我做错了什么?
  2. 这是一个jQuery错误还是预期的行为?
  3. 任何变通方法(特别是除了使用其他元素之外的自定义事件)?

html javascript jquery html5 javascript-events

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

是否可以模拟打字稿装饰器?

鉴于我有方法装饰器,例如

class Service {
    @LogCall()
    doSomething() {
        return 1 + 1;
    }    
}
Run Code Online (Sandbox Code Playgroud)

是否可以@LogCall在单元测试中模拟装饰器,这样它就不会被应用或应用模拟逻辑?

我正在寻找任何打字稿装饰器的通用解决方案,因为可以更新装饰器以检查window.disableLogDecorator标志或在测试期间将其关闭,但这不是可重用的解决方案。


当然,我们的用例比提供的示例要复杂得多 - 我们将@memoizeSelector其应用于ngrx/store选择器,因此仅在更新特定状态部分时才调用它们。由于我们在测试中模拟状态的方式,@memoizeSelector会破坏我们的测试,因此理想情况下我们希望禁用它。

unit-testing mocking decorator typescript angular

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