2012-11-12 95 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

相關問題