index.html:
{% load staticfiles %}
<html ng-app = "myModule">
<head>
<script src = '{% static "scripts/angular.js" %}'> </script>
<script src = '{% static "scripts/application.js" %}'> </script>
</head>
<body ng-controller = "myController">
Table: Message: {{ message }}
<table>
<tr ng-repeat = "t in technologies track by $index">
<td> {{ t.name }} </td>
</tr>
</table>
</body>
</html>
application.js:
// Create a module
var myApp = angular.module("myModule", []);
// Create a controller. Attach model to the scope.
var myContoller = function ($scope, $http, $log) {
var technologies = [{name: "C", likes: 0, dislikes: 0},
{name: "Perl", likes: 0, dislikes: 0},
{name: "Java", likes: 0, dislikes: 0},
{name: "Python", likes: 0, dislikes: 0}];
$scope.technologies = technologies;
$scope.message = 'AngularJS table';
}
// Register the controller with the module
myApp.controller("myController", myContoller);
当我打开index.html时,没有显示来自模型的数据。我是否缺少明显的东西?
我只在这里显示html和controller文件。但是代码是Django项目的一部分。
问题是您混合使用Django模板和angular模板。这意味着如果您编写:
{{ t.name }}
Django模板渲染首先对此进行了解释。如果t
存在(带有name
属性或元素),则它将呈现内容。如果不是,它将用空字符串(或您配置的另一个错误字符串)替换。无论用什么替换,它{{ t.name }}
本身都消失了。
因此,“ Angular模板”(呈现Django模板的最终产品)永远不会看到此标记。但是,有一些机制可以防止Django解释{{ }}
部件(以及其他模板标签)。
您可以使用verbatim
模板标签[Django-doc]在某些特定部分禁用django模板引擎。因此,将其编写为:
{% load staticfiles %}
<html ng-app = "myModule">
<head>
<script src = '{% static "scripts/angular.js" %}'> </script>
<script src = '{% static "scripts/application.js" %}'> </script>
</head>
<body ng-controller = "myController">
Table: Message: {% verbatim %}{{ message }}{% endverbatim %}
<table>
<tr ng-repeat = "t in technologies track by $index">
<td> {% verbatim %}{{ t.name }}{% endverbatim %} </td>
</tr>
</table>
</body>
</html>
因此,现在{{ t.name }}
将不会由Django模板引擎进行评估,它只会呈现{{ t.name }}
为输出。然后可以通过“ Angular模板引擎”进行解释,并用列表中的值代替。
该django-angular
文件对这一问题的部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句