2012-11-12 54 views
1

全部,AngularJS构造函数或init?

我们正在用AngularJS开发我们的应用程序,我们一次又一次地遇到Angular运行或加载控制器两次的问题。这在测试我们的控制器时更具侵入性,更具体地说,当与茉莉花的SpyOn一起使用Testacular时(因为它们在我们的代码运行之前被触发)。所以,我们的问题是,在实例化不需要在测试代码中解决问题的控制器时,Angular保证会调用构造函数或init方法这样的事情吗? TIA。

+0

这可能有助于了解您的测试是如何设置的,因为在测试期间,Angular应该只是实例化控制器一次。 –

+2

我不认为这会很容易帮助没有看到代码示例... –

回答

1

你的控制器不应该被加载两次,除非你做错了什么。你不应该破解任何解决方法。

您可能想要提供一个具体示例,说明如何加载控制器(和/或与控制器关联的部分)。这听起来像您可能有一个路由问题,导致您的视图为每个请求加载两次。

假设这是一个路由相关问题,除非/直到您可以提供更多信息以帮助人们来帮助您,您可能需要阅读本文档。要特别提到要提及“重定向”和“HTML 5”模式部分:

http://docs.angularjs.org/guide/dev_guide.services.$location

随着资料太少去,我不能回答你的问题,但也许这种联系将帮助你帮助你自己。 :)

8

如果您在路由器中指定了控制器,那么您的模板不需要通过ng-controller标签指定控制器。这样做会加倍加载你的控制器。

+0

这也发生在我身上。 Angular.js文档应该更加清晰,但看看他们的示例应用程序的差异显示在添加路由之后从模板中删除控制器信息:https://github.com/angular/angular-phonecat /compare/step-6...step-7 –

+0

我有同样的问题,我正在做你所描述的。谢谢,我正把头撞在墙上! – Martijn

相关问题