angularjs - AngularJS 控制器数据绑定 {{$ctrl.test}} 不工作
问题描述
我通过尝试制作一个简单的应用程序来自学AngularJS。使用控制器时,我在数据绑定方面遇到了一些问题。
todo-item.js
'use strict';
angular.module('todoItem', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/todoItem', {
templateUrl: 'todo-item/todo-item.template.html',
controller: 'TodoItemCtrl'
});
}])
.controller('TodoItemCtrl', [function() {
this.test = [1, 2, 3, 4];
}]);
todo-item.template.html
<p>This is the partial for todo item.</p>
<p>
this is just a test
</p>
<p>{{$ctrl.test}}</p>
<ul>
<li ng-repeat="i in $ctrl.test">{{i}}</li>
</ul>
我看到的是网页显示:
这是待办事项的部分内容。
这只是一个测试
所以这表明模板正在呈现,但是没有数据绑定依赖部分......
如果我console.log(this.test)
在该行之后的控制器代码中添加了 a this.test = [1, 2, 3, 4]
,它会将数组对象打印到控制台Array(4) [ 1, 2, 3, 4 ]
。所以我知道控制器代码必须正在运行......
我错过了什么?
同样是 AngularJS 的新手,我还不熟悉在这个框架中进行调试。你通常会如何调试这样的东西?我可以去控制台做类似的事情>>$ctrl
吗?
如果它在这里有帮助,那就是 app.js
'use strict';
// Declare app level module which depends on views, and core components
angular.module('todoApp', [
'ngRoute',
'todoList',
'todoItem'
]).
config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
$locationProvider.hashPrefix('!');
$routeProvider.otherwise({redirectTo: '/todoList'});
}]);
和 index.html:
<!DOCTYPE html>
<html lang="en" ng-app="todoApp">
<head>
<meta charset="utf-8">
<title>ToDo AngularJS App</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="app.css">
</head>
<body>
<div ng-view></div>
<script src="lib/angular/angular.js"></script>
<script src="lib/angular-route/angular-route.js"></script>
<script src="app.js"></script>
<script src="todo-list/todo-list.js"></script>
<script src="todo-item/todo-item.js"></script>
</body>
</html>
解决方案
我认为您可能需要在您的路由提供程序中提供 controllerAs: '$ctrl' ,所以
$routeProvider.when('/todoItem', {
templateUrl: 'todo-item/todo-item.template.html',
controller: 'TodoItemCtrl',
controllerAs: '$ctrl'
});
推荐阅读
- android - takePicture 需要 CameraX (1.0.0-alpha06) 上的执行器
- docker - 如何运行私有 Docker 映像
- python - 我无法打开我的本地服务器。我做了待办事项清单
- scala - 重复记录移动到 Spark Scala 中的其他数据帧
- css - 带边距顶部的 css 选择选项
- node.js - 需要在我的 Ubuntu 操作系统中使用 nodejs 运行单独的 power shell 脚本
- python-3.x - 如果字符串在键或值中匹配,则删除字典中的键和值
- python - 是否有选择指定字符串后的前 2 个单词的功能?
- java - 如何使用 JSON 格式发布 ManyToOne 和 OneToOne 实体?
- sql - SSIS 不插入多于一行