gpt4 book ai didi

javascript - 在同一 DOM 上使用多个 Angular.js Controller

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:55 25 4
gpt4 key购买 nike

我对 Angular.js 还很陌生,并尝试在我的 Node.js 应用程序上实现它。

我已经成功使用 Angular 为单个 Controller 创建了 RESTful API,但现在想在单个 DOM 上使用两个或多个 Controller 。

具体来说,我想..

1) 使用 Angular 加载 DOM 模板的全局范围,其中包含站点标题、导航和元数据等内容,所有这些都将加载到头部、页眉和页脚中。将使用对我的 Node 服务器的 GET 请求来拉取范围。

2) 使用 Angular 加载给定页面的范围。这将根据每个页面的具体情况进行。简单的情况是将范围加载到模板中。

我已经成功地分别执行了 (1) 和 (2),但将它们组合起来会引发错误。

这是我的完整模板(实际上是由 Node 分部分加载的):

头部 - 包含全局配置范围的 ng-controller="configCtrl"

<html ng-app="angular" ng-controller="configCtrl" ><head> 

<meta http-equiv="Content-Type" content="text/html charset=UTF-8" />
<title>{{context.title}}</title>
<meta name="description" content="{{context.description}}">
<meta name="author" content="{{context.author}}">

<!-- Angular -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>

</head><body><div id="wrapper" >

正文 - 包含此特定页面范围的 ng-controller="testCtrl"

<div class="container" ng-controller="testCtrl">    
<div class="gutter col hidden-xs">&nbsp;</div>
<div class="content col" >

<div class="py80">

<h1>{{context.test}}</h1>

</div>

</div>
<div class="gutter col hidden-xs">&nbsp;</div>
</div>

<!-- ANGULAR CONTROLLER FOR THIS PAGE -->
<script src="/public/js/angular/test_controller.js"></script>

页脚 - 包含全局范围 Controller 的链接

<footer id="footer" ></footer>
</div></body></html> <!-- close tags-->

<!-- ANGULAR CONTROLLER FOR GLOBAL CONFIGURATION SCOPE -->
<script src="/public/js/angular/config_controller.js"></script>

这是我的“配置范围”的 Angular Controller

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

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

console.log("config controller");

$http.get('/config').then(function(response){

console.log(response.data);

$scope.context = response.data;

});

});

这是我的页面范围的 Angular Controller

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

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

console.log("test controller");

$http.get('/test').then(function(response){

console.log(response.data);

$scope.context = response.data;

});

});

我有一些服务器端 Controller 将数据返回到 Angular ,如上所述,它们在独立使用时都可以工作,但一起使用它们(如上所示)会引发以下客户端错误:

 angular.js:13920 Error: [ng:areq] http://errors.angularjs.org/1.5.8/ng/areq?p0=testCtrl&p1=not%20a%20function%2C%20got%20undefined
at angular.js:38
at sb (angular.js:1892)
at Pa (angular.js:1902)
at angular.js:10330
at ag (angular.js:9451)
at p (angular.js:9232)
at g (angular.js:8620)
at g (angular.js:8623)
at g (angular.js:8623)
at g (angular.js:8623)

有什么建议吗?

最佳答案

问题是您正在初始化应用程序两次。仅执行一次:

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

你会没事的。最佳实践是将该行完全分离到另一个文件中(例如“app-initialize.js”),然后您可以执行以下操作:

angular.module('angular').controller(...);

在您的所有文件中。

关于javascript - 在同一 DOM 上使用多个 Angular.js Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40776852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com