2016-03-29 45 views
1

這是我的代碼。是否有可能在一個html中有兩個應用程序

<body ng-app='myApp'> 
    <div ng-app='myApp1'> 

    </div> 
</body> 

這是我的js文件。

var app = angular.module('myApp',['ngAnimate','ngTouch']); 
app.controller('mainctrl', ...) 

var app1= angular.module('myApp1', []); 

可能嗎?可以正常工作嗎?

+1

yes你可以擁有它......但它們不應該嵌套..因爲單個應用程序將具有單獨的'root'元素 –

+0

是否有原因爲什麼myApp1不能成爲myApp的子模塊:'angular.module('myApp ',['myApp1'])'? – Martin

+0

[添加多個應用程序模塊時出現錯誤]的可能重複(http://stackoverflow.com/questions/34481574/error-when-adding-more-than-one-app-module) –

回答

2

你可以做到這一點,

<body> 
<div ng-app='myApp'></div> 
<div ng-app='myApp1'></div> 
</body> 

他們不能嵌套

0

您可以使用多個應用程序在你的代碼,但不能嵌套應用程序內的應用程序。但需要將它們分開,如:

<body> 
<div ng-app='myApp'> 
</div> 
<div ng-app='myApp1'> 
</div> 
</body> 

您可以檢查docs note

有幾件事情用ngApp時要記住:

  1. 只有一個AngularJS應用程序可以自動每個HTML文檔都有自啓動功能。在文檔中找到的第一個ngApp將用於定義根元素作爲應用程序自動引導。要在HTML文檔中運行多個應用程序,您必須使用angular.bootstrap來手動引導它們。

  2. AngularJS應用程序不能相互嵌套。

  3. 不要使用與ngApp使用相同元素上的transclusion的指令。這包括諸如ngIf,ngInclude和ngView之類的指令。這樣做會使應用程序$ rootElement和應用程序的注入器錯位,導致動畫停止工作,從應用程序外部無法訪問注入器。

如果您需要在myApp中使用myApp1代碼,那麼您需要將它作爲依賴項集成到父代中。

var app1= angular.module('myApp1', ['myApp']); 

dependency injection guide中查找此分類。

0

您可以在主模塊的模塊def中指定任何嵌套的應用程序。

angular.module("myApp", ['statusapp', 'myApp1']).controller(.... 

並且在一個單獨的文件中,您已定義了其他應用程序。我們使用的模板引擎隱藏了其中的一部分內容,但最終將爲每個定義模塊/控制器的HTML添加嵌套的ng-apps和javascript。上面的代碼是獲取多個引導程序的技巧。

0

據官方angular documentation

只有一個AngularJS應用程序可以自動自舉每HTML文檔 。在文檔中找到的第一個ngApp將用於定義 作爲應用程序的自動引導的根元素。要在HTML文檔中運行多個 應用程序,您必須使用angular.bootstrap代替手動引導它們 。

AngularJS應用程序不能相互嵌套。

我認爲這應該回答你的問題。

相關問題