嘿,我对模拟指令有问题。查看此代码:
<dir-one data="data">
<div ng-repeat="e in data">
<div ng-repeat="e2 in e">
<dir-two prop="e2.some" prop2="e2.some"> <!-- i want to mock this directive -->
</dir-two>
</div>
</dir-one>
不是我想模拟此模板到茉莉花并复制dir-two
单击事件。
我尝试了这样的东西:
var tpl = `<dir-one data="data">
<div ng-repeat="e in data">
<div ng-repeat="e2 in e">
<dir-two prop="e2.some" prop2="e2.some"> <!-- i want to mock this directive -->
</dir-two>
</div>
</dir-one>`
var newScope = $rootScope.$new();
newScope.DATA = // some data;
el= angular.element(tpl);
$compile(el)(newScope);
$rootScope.$digest();
catchController = el.controller('dirTwoController'); // undefined
catchController2 = el.controller('dirOneController'); // no error, catch object
有一个问题,因为我无法使用此模拟,只需dironecontroller corectly显示输出。
有任何解决此问题的想法吗?
谢谢!
这样做的一种方法是使用$provide
模拟指令实现。这可以在汇编父母指令之前在beforeEach
中完成。
beforeEach(module(function ($provide) {
$provide.factory('dirTwoDirective', function() {
return {
// Implementation of directive here
};
});
}));
请注意如何将单词指令添加到指令名称的末尾。