AngularJS:ng-repeat不显示数据(混合Django和Angular模板表达式)

苏巴

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章