我有一个表随着时间的推移会有不同的列,我希望我的django视图支持那些更改列。我也想用ng-repeat做一些奇特的东西,比如过滤和其他东西。但是我在将两者结合起来时遇到了麻烦。
我使用django模板语言传递任意col_names
。 packages
也使用django模板语言发送,并且本质上是一个json数组,其中每一行都是dict
映射col_name
到某个值。即。
$scope.packages = [{'col1': 'row1col1', 'col2': 'row2val2'}, {'col1': 'row2col1' ....
然而,当我使用packages
输入行时,我无法"嵌套"我的模板。有没有办法从`packages?
<input ng-model="search" placeholder="Search">
<table style="width:100%;">
<thead>
<tr>
<th>Permanent Column 1</th>
<th>Permanent Column 2</th>
{# changing columns #}
{% for col_name in col_names %}
<th>{{ col_name }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
<tr ng-repeat="package in packages | filter:searchPackage">
{% for col_name in columns %}
<td>{{package.{{ col_name }}}}</td> DOESN'T WORK!
{% endfor %}
</tr>
</tbody>
</table>
在该问题中,我基本上想要{{package.ACTUAL_ARBITRARY_COL_NAME}}
,但我不知道如何以编程方式执行此操作
答案 0 :(得分:2)
默认情况下,Django和AngularJS使用相同的标记{{
和}}
进行模板化。
所以这首先由Django模板处理
{% for col_name in columns %}
<td>{{package.{{ col_name }}}}</td> DOESN'T WORK!
^ ^
|________________________|
Django template will try to process this value
因为Django试图扩展第一个{{...}}
内的内容,所以你不会得到你希望AngularJS看到的东西。
If you want to continue down that road, I suggest you read some solutions to this problem here
更好的方法是为AngularJS提供您希望Django为您循环的项目。
$scope.columns = [...];
Then use AngularJS to do all the loops。无论你采用哪种方式,如果你需要在AngularJS中完成它,最好在AngularJS中完成所有操作而不是半Django半AngularJS。