1
我最近遇到了這個問題的角度指令: 我:directive-a
,directive-b
如何嘲笑有需要現場
指令-B有一個`要求:「^指令,一個」領域,這使得單位測試不可能。
我用來編譯這樣的指令在我的單元測試:
element = $compile('<directive-a></directive-a>')($scope);
然後,我可以得到element.isolateScope()
隔離範圍,但現在由於B對一個依賴,我不得不這樣做:
element = $compile('<directive-a> <directive-b></directive-b> </directive-a>')($scope);
在這種情況下element.isolateScope()
返回指令-a的範圍,而不是指令-b。
如何獲得directive-b
的範圍?
演示:
指令答:
(function(){
'use strict';
function directiveA(){
return {
restrict: 'E',
templateUrl: '/main/templates/directiveA.html',
transclude: true,
scope: {
attr1: '='
},
controller: function($scope){
//code...
},
link: function($scope, element, attrs, ctrl, transclude){
injectContentIntoTemplate();
function injectContentIntoTemplate(){
transclude(function (clone) {
element.find('#specificElement').append(clone);
});
}
}
};
}
angular
.module('myModule')
.directive('directiveA', directiveA);
}());
指令B:
(function(){
'use strict';
function directiveB(){
return {
restrict: 'E',
templateUrl: '/main/templates/directiveA.html',
transclude: true,
replace: true,
scope: {
attr1: '@'
},
require: '^directiveA',
link: function ($scope, element, attrs, ctrl) {
$scope.customVariable = 'something';
}
};
}
angular
.module('myModule')
.directive('directiveB', directiveB);
}());
謝謝@休斯頓,但我的問題是如何模擬,而不是如何編譯。這是兩種不同的解決方案。我更喜歡嘲笑我的內心指令,而不是執行它。 – Iamisti
Hrm。你的問題是關於訪問內部指令的範圍,所以我試圖回答。如果你還有一個關於如何嘲笑內部指令的問題,那麼你也應該問一個問題。 ;-) –
對不起,你沒錯。你回答了我的問題。 – Iamisti