我正在尝试了解如何为指令编写规范,尤其是如何访问隔离范围方法和属性。我整个上午一直在这里,而且还有一些我没有得到的东西。这是a very simple plunker of my attempts以及我为设置测试套件而做的主要事情:
var scope = $rootScope.$new();
scope.daParam = "param handed to the directive";
element = $compile( "<my-directive param='daParam'></my-directive>" )( scope );
scope.$digest();
isolateScope = element.isolateScope();
describe("compilation results", function()
{
it("has the outer directive param", function() {
// Pass
expect( isolateScope.param ).toBeDefined();
});
it("has the inner scope methods", function() {
// Doesn't pass
expect( isolateScope.myMethod ).toBeDefined();
});
});
但即使我可以检索隔离范围,这个范围也不会显示它应该具有的任何属性(例如我在指令的link
方法中声明的方法)。它只显示指令参数,但不显示内部方法和属性,因为它应该是。
如果你们中的任何人都有线索......我今天一直在阅读这篇文章,将我的代码与博客文章或SO答案中的代码进行比较,看不出我做错了什么。