2

我正在开发一个应用程序,其中定义和使用了多个 ng-app。最初,不同页面上的 ng-app 并不冲突,因为所有页面都是独立的,但现在我必须包含一个标题,并且标题定义了自己的 ng-app。

我正在使用两种不同的方法来避免标题应用程序与其他页面应用程序发生冲突。

第一种方法:在每个页面上手动引导应用程序:

angular.bootstrap($('#mycontact_container'),['contactsApp']);

或者

 angular.element(document).ready(function() {

    angular.bootstrap($('#topNavigation'),['headerApp']);

});

第二种方法:

angular.module("rootApp", ["headerApp", "contactsApp"]);

其中 rootApp 是在 body 标记中定义的应用程序,其中将包含整个应用程序。headerApp 是在每个页面的标题上定义的应用程序,contactApp 是一个自定义 html 页面的应用程序。

第一种方法错误:

错误:[$injector:modulerr] http://errors.angularjs.org/1.4.8/$injector/modulerr?p0=headerApp&p1=%5B%24injector%3Amodulerr%5D%20http%3A%2F%2Ferrors.angularjs。 org%2F1.4.8%2F%24injector%2Fmodulerr%3Fp0

第一种方法的 OR 部分出错:

错误:[ng:btstrpd] http://errors.angularjs.org/1.4.8/ng/btstrpd?p0=%26lt%3Bsection%20id%3D%22topNavigation%22%20class%3D%22top-navigation%20ng-范围%22%20ng-app%3D%22headerApp%22%26gt%3B

...fe?JSON.stringify(e):e;d+=c(e)}返回错误(d)}}函数 za(a){if(null==a||Xa(a...

即应用程序已经引导。

第二种方法问题: 没有错误,但是当我尝试在包含在标题中的我的一个应用程序中使用 interpolate 提供时,即它将使用以下代码包含在整个应用程序中:

headerApp.config(['$interpolateProvider',

    function($interpolateProvider) {
        $interpolateProvider.startSymbol('{$');
        $interpolateProvider.endSymbol('$}');
    }
]);

    app.controller('MainController', ['$scope', '$http',function MainController($scope, $http) {

        $scope.first_name = "abc";
});

在我看来,我没有使用 {$ first_name $} 打印任何内容。最终我的应用程序行为不端。我已经在不同的帖子SO 问题中发布了这个问题, 任何人都可以指导我究竟需要遵循什么来纠正我的应用程序在现有架构中的行为。我想只有角度专家才能在这里很好地指导我。

如果需要更多详细信息,请告诉我。

更新

手动引导应用程序时遇到以下错误:

错误:[ng:btstrpd]

因为我在 html 中使用了 ng-app。当手动引导应用程序时,不需要 ng-app。

4

0 回答 0