AngularJS 在 1 个应用程序中声明多个控制器
AngularJS Declaring Multiple Controllers in 1 app
我在 1 个应用程序中声明 2 个控制器时遇到问题。 我的猜测是这是一个语法错误,但不完全确定。
我收到的错误消息是"未定义人员"。
这是我的应用文件
var myApp = angular.module('myApp',[]);
myApp.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('{[{');
$interpolateProvider.endSymbol('}]}');
});
myApp.controller('controller1', function($scope) {
var pets = [
{animal: "dog", years: "3 Years"},
{animal: "dog", years: "1 Years"},
];});
myApp.controller('controller2', function($scope) {
var people = [
{name: "john", bday: "september"},
{name: "nancy",bday: "december"},
];
});
在我的html页面上,我只是编写了一些试图获取人员数组长度的javascript。
var totalpeople = people.length;
注意:不确定这是否是重要信息,但我在 html 标记中声明了我的应用。
更新:这是我的HTML页面上的一些基本伪代码。
<html ng-app="myApp">
<head>
<script>
var totalpeople = people.length;
</script>
</head>
<body>
<div ng-controler="controller1">
<table><tr ng-repeat="rows in pets">
<td>{[{pets.animal}]}</td><td>{[{pets.year}]}</td>
</tr>
</div>
<div ng-controler="controller2">
<table><tr ng-repeat="rows in people">
<td>{[{pets.name}]}</td><td>{[{pets.bday}]}</td>
</tr>
</div>
<div>
<table><tr>
<td><script>//not actually doing this, but totalpeople goes here </script></td>
</tr>
</div>
</body>
html 和脚本部分都有很多错误。就像你把ng-controller
误写成ng-controler一样。而且,ng-repeat逻辑都是错误的。您缺少表标记等。我不知道你为什么要插值{{}}来使用{[{}]}。
这是工作弹道机:http://plnkr.co/edit/qs7mCrmElXGqGHdKAmNH?p=preview
<html>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>
</head>
<body ng-app="myApp">
<div ng-controller="controller1">
<table><tr ng-repeat="rows in pets">
<td>{[{rows.animal}]}</td><td>{[{rows.years}]}</td>
</tr>
</table>
Total pets:{[{count}]}
</div>
<div ng-controller="controller2">
<table><tr ng-repeat="rows in people">
<td>{[{rows.name}]}</td><td>{[{rows.bday}]}</td>
</tr>
</table>
</div>
<br>
Total Pets:
<span id="show"></span>
<script>
var myApp = angular.module('myApp',[]);
myApp.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('{[{');
$interpolateProvider.endSymbol('}]}');
});
myApp.controller('controller1', function($scope) {
$scope.pets = [
{animal: "dog", years: "3 Years"},
{animal: "dog", years: "1 Years"}
];
$scope.count = $scope.pets.length;
document.getElementById('show').innerText=$scope.count;//use directive to achieve this,using jquery inside controller is bad practise. Used just for the purpose of demo.
});
myApp.controller('controller2', function($scope) {
$scope.people = [
{name: "john", bday: "september"},
{name: "nancy",bday: "december"},
];
});
</script>
</body>
</html>
在我的 html 页面上,我只是在编写一些试图 获取人员数组的长度。
您确定您希望people
在全局范围内可用(即window
对象的属性)吗?
现在让我们简化代码,如下所示:
function doStuff() {
var people = "whatever";
}
doStuff();
// Is "people" variable available?
答案是否定的,它不可用,因为它是一个doStuff
函数局部变量。
这不是一个特定于 Angular 的问题,但它是变量范围在 JavaScript 中的工作方式(实际上在任何语言中)。
实际上,Angular 试图避免向全局范围添加垃圾,您需要使用内置的数据绑定来显示 UI 中的值。
为什么你需要在你的视图中编写javascript来获得长度?
$scope.people = [
{name: "john", bday: "september"},
{name: "nancy",bday: "december"},
];
然后可以只做人.长度在你的观点。
不过,查看您尝试调用它的上下文会有所帮助。
相关文章:
- 如何声明具有相同控制器的处于相同状态的多个模板
- 当指令中已经给定作用域时,如何访问控制器中声明的函数
- 无法使用typescript访问angular中另一个控制器中声明的$rootscope属性
- 为什么要将控制器声明为自身中的变量或使用$scope
- 如何在 PopConconfirm 中单击按钮 yes 时调用在 Angular 控制器中声明的删除函数
- AngularJS 在 1 个应用程序中声明多个控制器
- 构建现实世界的AngularJS应用程序,我应该如何在html中声明我的控制器.我需要在索引中声明所有.html吗?
- 在控制器中声明的变量,带有“var”,但在控制器中引用为范围
- 如何在控制器中声明$rootscope并在另一个控制器中访问它
- 列出 AngularJS 模块中声明的指令/控制器
- 使用 Angular 常量声明控制器名称
- 在 angularjs 控制器范围内声明函数和属性,但不附加到$scope
- Marionette控制器功能声明-最佳实践
- 控制器声明中的Angular Meteor箭头函数
- 在单个模块中声明时未定义控制器
- 在AngularJS中声明控制器
- 在配置中声明的路由与由其控制器声明的路由相比
- 如何将应用程序控制器中声明的值传递给组件
- 在我的应用程序中声明和链接控制器时遇到麻烦
- 你必须在视图中声明控制器吗?或者你可以在$routeProvider中声明它吗