我制作了一个模板标签,目的是简化Angular的包含。
负责在上下文中设置一些变量的标记如下:
@register.simple_tag(takes_context=True)
def ng_controller(context, controller_name, file_name):
context['angular_import'] = True
context['angular_controller_file'] = file_name
return 'ng-controller="{}"'.format(controller_name)
根模板使用此块代替javascript导入
{% block container_content %}{% endblock %}
{% block angular_inclusion %}{% endblock %}
继承根模板的模板是这个
{% extends 'root.html' %}
{% block container_content %}
<div class="row">
<div class="col-sm-12">
<div class="well" {% ng_controller 'CreateEdictController' 'js/controllers/create-edict-controller.js' %}>
{{ angular_controller_file }}
</div>
</div>
</div>
{% endblock %}
{% block angular_inclusion %}
{{ angular_controller_file }}
{% endblock %}
我可以在第一个块中成功访问{{ angular_controller_file }}
,但不能在第二个块中访问。如何确保上下文操作也影响第二个块呢?
答案 0 :(得分:0)
上下文中的变量范围
上下文中设置的任何变量只能在同一个中使用 分配给它的模板块。这种行为是 故意的;它为变量提供了一个范围,以便它们不会 与其他区块的背景冲突。
所以第一个块container_content
中的标记调用:
<div class="well" {% ng_controller 'CreateEdictController' 'js/controllers/create-edict-controller.js' %}>
在第二个区块angular_inclusion