使用ajax加载包含Angularjs指令的Django模板
我正试图使用Angularjs的使用ajax加载包含Angularjs指令的Django模板,angularjs,django,Angularjs,Django,我正试图使用Angularjs的$http方法根据用户的选择获取给定的Django模板,每个模板都包括角度指令(ng if)以进一步过滤内容 但是,虽然插入的模板很好,而且我在检查html时可以看到指令,但实际上并没有进行过滤。当我使用templates insert控制台日志时,他们无法找到插入模板的正上方和下方可访问的$scope变量 我要插入的模板如下所示: <div class="data_point_popup"> {% if id in values_di
$http
方法根据用户的选择获取给定的Django模板,每个模板都包括角度指令(ng if
)以进一步过滤内容
但是,虽然插入的模板很好,而且我在检查html时可以看到指令,但实际上并没有进行过滤。当我使用templates insert控制台日志时,他们无法找到插入模板的正上方和下方可访问的$scope
变量
我要插入的模板如下所示:
<div class="data_point_popup">
{% if id in values_dict %}
{% if values_dict|get_item:id|get_item:"not_applicable" == True %}
n/a
# ...
{% else %}
{% if id in definitions_dict %}
{% if definitions_dict|get_item:id|get_item:"data_type" == "Integer" %}
{{ values_dict|get_item:id|get_item:"value"|floatformat:0 }}
{% elif definitions_dict|get_item:id|get_item:"data_type" == "Currency" %}
<div class="currency eur" ng-if="Page.getCurrencySelection() === 'eur'">€{{ values_dict|get_item:id|get_item:"value_json"|get_item:"eur_value"|floatformat:2 }}</div>
<div class="currency gbp" ng-if="Page.getCurrencySelection() === 'gbp'">£{{ values_dict|get_item:id|get_item:"value_json"|get_item:"gbp_value"|floatformat:2 }}</div>
<div class="currency usd" ng-if="Page.getCurrencySelection() === 'usd'">${{ values_dict|get_item:id|get_item:"value_json"|get_item:"usd_value"|floatformat:2 }}</div>
<div class="currency base" ng-if="Page.getCurrencySelection() === 'base'">Base:{{ values_dict|get_item:id|get_item:"value_json"|get_item:"base_value"|floatformat:2 }}</div>
<script>console.log(Page.getCurrencySelection())</script>
# ...
{% else %}
<span style="color: red;">ERROR-NO_DEFINITION</span>
<script>console.warn("Unable to find definition for data point {{ id }}.");</script>
{% endif %}
{% endif %}
{% else %}
-
{% endif %}
</div>
我想知道如何插入模板和角度指令功能?问题与Django模板没有任何关系。最后,尝试将包含角度指令的html直接插入页面是一个普遍问题。我需要做的是在插入模板之前编译模板。像这样:
function(response) {
var tab = $("div[data-tab='" + tabPath + "']");
var template = angular.element(response.data);
var link = $compile(template);
var element = link($scope);
tab.append(element);
});
我不确定你在这里使用AngularJS和Django的方式是否正确。您应该使用其中一个来渲染视图,而不是同时使用两个。就我个人而言,我会使用AngularJS来呈现视图,并让Django通过JSON提供需要在这些视图中显示的实际内容。
function(response) {
var tab = $("div[data-tab='" + tabPath + "']");
var template = angular.element(response.data);
var link = $compile(template);
var element = link($scope);
tab.append(element);
});