2015-05-22 84 views
0

我使用angular作爲前端,Python-Django作爲後端。我使用TemplateResponse()來呈現Python中的HTML,然後將此響應發送到角度作爲響應,我將其存儲在一些$scope variable中。這裏重要的是我在PYthon中渲染的HTML包括Css,Js,HTML + Angular代碼。例如,以角度重新呈現內容

<div ng-repeat='val in values'> 
    <span>{{ val }}</span> 
</div> 

現在Python將會使這個代碼(包括更多,但是這是一個樣品),併發送響應角(我還會發送此值從Python數據),其中我將這些信息存儲在$範圍。

$scope.html_response = response sent from Python 
$scope.values = values data from python (it will be a object so angular can loop over this easily) 

我擁有在HTML中使用的角度爲HTMl + Angular Scope的所有內容。 現在最主要的是如何將它們綁定在一起,以便HTML獲取角度範圍並循環數據。爲此,我正在使用角度指令。

HTML:

<div dynamic="html_response"></div> 

角指令:

app.directive('dynamic', function ($compile) { 
    return { 
    restrict: 'A', 
    replace: true, 
    link: function (scope, ele, attrs) { 
     scope.$watch(attrs.dynamic, function(html) { 
     ele.html(html); 
     $compile(ele.contents())(scope); 
     }); 
    } 
    }; 
}); 

這個指令是幹什麼的角度範圍的結合與HTML我。

一切都在爲我工作,直到我有一個問題。正如我上面解釋的,我先呈現HTML然後綁定角度範圍。但在我的情況下(一個js滑塊),我需要首先呈現角度,然後呈現HTML(js代碼)意味着滑塊js必須呈現在角度之後,以便滑塊已經可以顯示數據。

但我無法首先從python端渲染角度數據。我必須發送HTML響應給角度,無論它包括什麼。

是他們的任何其他方法或我可以做的角度結束,以便我可以解決我的問題。

+0

當您打印'{{val}}'是來自angular或django的值嗎? – Gocht

+0

@Gocht它的角度,我知道兩個hv相同的syntex和多數民衆贊成在我已經改變角syntex。我實際上使用了這個syntex'{$ val $}',但是我寫了'{{val}}',這樣angular dev就不會混淆我正在使用錯誤的syntex。 – saf

回答

0

您可以採取的一種方法是將HTML/CSS/JS呈現與數據本身分開。

您可以通過首先在Python中生成HTML/CSS/JS並讓Angular從Django後端獲取JS滑塊所需的數據(以JSON格式?)並呈現它來實現此目的。這意味着您將有2次訪問後端 - 一個用於頁面本身,另一個用於頁面所需的數據。

+0

感謝您的建議。我一定會研究這種方法 – saf