我们正在用AngularJS开发我们的应用程序,我们一次又一次地遇到Angular运行或加载控制器两次的问题。这在测试我们的控制器时更具侵入性,更具体地说,当与茉莉花的SpyOn一起使用Testacular时(因为它们在我们的代码运行之前被触发)。所以,我们的问题是,在实例化不需要在测试代码中解决问题的控制器时,Angular保证会调用构造函数或init方法这样的事情吗? TIA。
回答
你的控制器不应该被加载两次,除非你做错了什么。你不应该破解任何解决方法。
您可能想要提供一个具体示例,说明如何加载控制器(和/或与控制器关联的部分)。这听起来像您可能有一个路由问题,导致您的视图为每个请求加载两次。
假设这是一个路由相关问题,除非/直到您可以提供更多信息以帮助人们来帮助您,您可能需要阅读本文档。要特别提到要提及“重定向”和“HTML 5”模式部分:
http://docs.angularjs.org/guide/dev_guide.services.$location
随着资料太少去,我不能回答你的问题,但也许这种联系将帮助你帮助你自己。 :)
如果您在路由器中指定了控制器,那么您的模板不需要通过ng-controller标签指定控制器。这样做会加倍加载你的控制器。
这也发生在我身上。 Angular.js文档应该更加清晰,但看看他们的示例应用程序的差异显示在添加路由之后从模板中删除控制器信息:https://github.com/angular/angular-phonecat /compare/step-6...step-7 –
我有同样的问题,我正在做你所描述的。谢谢,我正把头撞在墙上! – Martijn
- 1. 结构构造函数或init
- 2. jQuery的构造函数和init
- 3. Servlet构造函数和init()方法
- 4. PHP - init父变量(带构造函数)
- 5. C++ init类成员构造函数
- 6. 构造函数super()es6 angularjs
- 7. 没有参数的构造函数或参数构造函数
- 8. 构造函数或复制构造函数?
- 9. AngularJS/Jasmine undefined不是构造函数
- 10. 构造函数内的构造函数
- 11. Android活动LaunchMode SingleTask不会触发MvvmCross ViewModel构造函数或Init方法
- 12. 什么应该是构造函数属性值..a原型构造函数或对象构造函数本身
- 13. 如何为空arg构造函数提供init方法?
- 14. 桥接时init和initWithBridge构造函数的区别?
- 15. 为什么要使用类方法构造函数与alloc/init?
- 16. C++构造函数中超类的init成员
- 17. In-class init(赋值样式)vs构造函数的性能
- 18. Swift中的init与C#中的构造函数相同吗?
- 19. 为什么在Objective C构造函数中使用[super init]?
- 20. jquery对象实际上只是init构造函数'enhanced'
- 21. 构造函数param在init中不可用
- 22. OOP - 覆盖init方法在构造函数
- 23. 构造函数
- 24. 构造函数中的调用基构造函数和其他构造函数
- 25. 预期的构造函数,析构函数或类型 '(' 令牌
- 26. 预期的构造函数,析构函数或类型转换
- 27. 构造函数\析构函数或对OOP的理解
- 28. FB init函数在angularJs中不工作
- 29. 当调用复制构造函数或赋值构造函数时?
- 30. Javascript - 在构造函数或构造函数的prototype属性中设置属性?
这可能有助于了解您的测试是如何设置的,因为在测试期间,Angular应该只是实例化控制器一次。 –
我不认为这会很容易帮助没有看到代码示例... –