Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 测试期间未触发提线针_Javascript_Backbone.js_Jasmine_Marionette - Fatal编程技术网

Javascript 测试期间未触发提线针

Javascript 测试期间未触发提线针,javascript,backbone.js,jasmine,marionette,Javascript,Backbone.js,Jasmine,Marionette,我正在编写测试,其中我在onAttach生命周期方法中有一些逻辑,但在测试时,从未调用onAttach 这就是我最初尝试测试它的方式 beforeEach(() => { view = new OffersTab(); view.render(); }); 但我的理解是当显示区域时它会被触发,所以我尝试这样做 beforeEach(() => { let parentView = new AllOffers(); parentVi

我正在编写测试,其中我在onAttach生命周期方法中有一些逻辑,但在测试时,从未调用onAttach

这就是我最初尝试测试它的方式

 beforeEach(() => {
        view = new OffersTab();
        view.render();
 });
但我的理解是当显示区域时它会被触发,所以我尝试这样做

beforeEach(() => {
    let parentView = new AllOffers();
    parentView.render();
    parentView.getRegion('offersTab').show(new OffersTab());

    view = parentView.getRegion('offersTab');
});

但是onAttach仍然没有启动,使我无法编写测试

视图上的与区域上的之间存在差异。(使用
onAttach
方法是一种方便的方法,不需要通过
listenTo
进行订阅)

贴上 当视图显示在区域中时,会触发
attach
事件,该事件会将视图附加到DOM中,并附加到页面的
文档中有其祖先的元素(
document.documentElement
)。这意味着视图的元素(
el
)或父视图或父视图已附加到DOM。仅在父视图的区域中显示视图是不够的。首先,当父视图被附加到DOM中时,事件将被递归地触发到所有子视图

在显示子视图之前,您可以通过测试
父视图来检查它:

//All将返回false
document.documentElement.contains(parentView.el);
木偶。是节点连接的(parentView.el);
parentView.isAttached();
如果您的视图需要附加到DOM才能正常工作,则必须选择DOM中的元素并在其中显示父视图。例如,在
document.body
中:

let body、parentView、view;
在(()=>{//mocha's“在所有人之前”
body=新的木偶区域({el:'body'});
});
在每个之前(()=>{
parentView=新的AllOffers();
body.show(parentView);//将父视图附加到DOM
视图=新报价表();
parentView.getRegion('offersTab').show(视图);
});
之后(()=>{
body.empty();//分离并销毁视图
});
或者,您可以将
AllOffers
附加到DOM本身的代码。或者将DOM中的元素传递给其构造函数,例如:
newalloffers({el:body})
。当你不需要它的时候,别忘了把它毁掉

显示 当视图显示在区域中时,将在区域而不是视图上触发事件
show
。(我写的是木偶3或更新版本。木偶2触发了视图上的
show
事件。)


如果您的事件处理程序需要在父视图区域中显示视图之后执行,而不是在DOM中出现视图之后,请考虑将代码移动到(或<代码> OnReals< /Cult>方法)。您可以在区域上收听

show
事件,并在子视图上重新触发它,但您最好遵循木偶的最佳实践,并且。

在视图上和在区域上有区别。(使用
onAttach
方法是一种方便的方法,不需要通过
listenTo
进行订阅)

贴上 当视图显示在区域中时,会触发
attach
事件,该事件会将视图附加到DOM中,并附加到页面的
文档中有其祖先的元素(
document.documentElement
)。这意味着视图的元素(
el
)或父视图或父视图已附加到DOM。仅在父视图的区域中显示视图是不够的。首先,当父视图被附加到DOM中时,事件将被递归地触发到所有子视图

在显示子视图之前,您可以通过测试
父视图来检查它:

//All将返回false
document.documentElement.contains(parentView.el);
木偶。是节点连接的(parentView.el);
parentView.isAttached();
如果您的视图需要附加到DOM才能正常工作,则必须选择DOM中的元素并在其中显示父视图。例如,在
document.body
中:

let body、parentView、view;
在(()=>{//mocha's“在所有人之前”
body=新的木偶区域({el:'body'});
});
在每个之前(()=>{
parentView=新的AllOffers();
body.show(parentView);//将父视图附加到DOM
视图=新报价表();
parentView.getRegion('offersTab').show(视图);
});
之后(()=>{
body.empty();//分离并销毁视图
});
或者,您可以将
AllOffers
附加到DOM本身的代码。或者将DOM中的元素传递给其构造函数,例如:
newalloffers({el:body})
。当你不需要它的时候,别忘了把它毁掉

显示 当视图显示在区域中时,将在区域而不是视图上触发事件
show
。(我写的是木偶3或更新版本。木偶2触发了视图上的
show
事件。)


如果您的事件处理程序需要在父视图区域中显示视图之后执行,而不是在DOM中出现视图之后,请考虑将代码移动到(或<代码> OnReals< /Cult>方法)。您可以在区域上收听

show
事件,并在子视图上重新触发它,但您最好遵循木偶的最佳实践,并且。

是否检查它是否确实连接到DOM?可能它在测试中没有找到正确的选择器。您是否检查了它是否确实连接到DOM?也许它在测试中没有找到正确的选择器