AngularJS如何为吴-显示/隐藏特定元素内 django 的 for 循环

发布时间: 2017/4/16 20:01:06
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

嗨,我做事在 Django 动力网站上一些 AngularJS我有 django 模板,如下所示

<div ng-app="MyApp" ng-controller="MyCtrl">
    <script src="{{ STATIC_URL }}js/bootstrap.min.js"></script>
    <div class="well ">
        {% for k, m in items %}
            <table ng-show="show" class="table table-bordered tbl" ng-cloak>
              <tr align="left">
                <span>
                    <button ng-click="show=!show" class="btn btn-default drop">
              ..............

和 angularjs

{% block extra_js %}
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script>
var app = angular.module('MyApp', []);

app.controller('MyCtrl', function($scope) {
    $scope.show = false;
});
</script>
{% endblock extra_js %}

什么在这里实现的是每当用户单击按钮内表隐藏或反之亦然。但是和代码,当用户单击按钮时的所有表 (记得以来它的里面会有多个表的 for 循环) 是隐藏而不是那个特定的表。有什么要隐藏只有那个特定的表吗?而不是所有的表?在此先感谢。

解决方法 1:

做这样的事情的推荐的方式是不使用 Django 模板化,而是传递 JSON 对象作为变量,并且让角做所有模板。你可以通过发送他们在 Ajax 或最简单的情况,只通过他们在为 Django 模板上下文并将它们添加到 window 中内联脚本在您的页面的顶部的对象。然后,您可以访问他们从 window 在角控制器中。这两种解决方案将导致很多简洁的代码,而第二个将没有更多的努力,以实现比你有什么。

如果你真的想要继续沿着你的路径,你可以尝试以下操作。您的 javascript 变量 show 可以成为对象,具有作为键你 Django 对象 id (不确定究竟什么的 Django 对象你要在迭代通过你 {% for k, m in items %} 循环,但您可以使用任何唯一的 id,他们有。)

所以它会看起来像这样︰

{% for k, m in items %}
    <table ng-show="show[{{ k }}]" class="table table-bordered tbl" ng-cloak>
        <tr align="left">
            <span>
                <button ng-click="show[{{ k }}] =! show[{{ k }}]" class="btn btn-default drop">

app.controller('MyCtrl', function($scope) {
   $scope.show = {};
});
官方微信
官方QQ群
31647020