使用隔离范围

时间:2015-06-12 14:33:25

标签: javascript angularjs karma-runner

我正在尝试了解如何为指令编写规范,尤其是如何访问隔离范围方法和属性。我整个上午一直在这里,而且还有一些我没有得到的东西。这是a very simple plunker of my attempts以及我为设置测试套件而做的主要事情:

1。使用我将传递给指令

的属性创建一个范围
var scope = $rootScope.$new();
scope.daParam = "param handed to the directive";

2。使用此范围编译指令

element = $compile( "<my-directive param='daParam'></my-directive>" )( scope );
scope.$digest();

3。检索已编译指令的隔离范围

isolateScope = element.isolateScope();

4。对这个孤立的范围包含的内容进行一些测试。

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答案中的代码进行比较,看不出我做错了什么。

0 个答案:

没有答案