国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

解決Angular.Js與Django標簽沖突的方案

高洛峰
發(fā)布: 2016-12-27 15:13:26
原創(chuàng)
1520人瀏覽過

前言

大家應(yīng)該都知道,Django和Angular的模板系統(tǒng)使用了非常相似的標簽系統(tǒng),比如說,都是使用{{ content }}表示變量名字。所以Django和Angular配合使用的時候,會引起沖突。我在網(wǎng)上找到了一些解決方法。現(xiàn)在總結(jié)后分享給大家,下面來一起看看吧。

一、 改變AngularJs的默認標簽

下面的代碼可以將Angular原來的標簽改成{[{ content }]}?。

修改Angular的標簽

myModule.config(function($interpolateProvider) {
 $interpolateProvider.startSymbol('{[{');
 $interpolateProvider.endSymbol('}]}');
});
登錄后復(fù)制

? ?

這是比較簡單,并且直觀的一種方法。修改之后的代碼比較容易閱讀,一眼就能看出來是Django的標簽還是Angular的。缺點是很容易與第三方的插件沖突(如果第三方的插件使用了指令等用到標簽的地方)。

二、 告訴Django不要渲染模板的其中一部分內(nèi)容

從Django 1.5開始,支持{% verbatim %}標簽(verbatim的意思是逐字翻譯的,字面意思的),Django不會渲染verbatim標簽包裹的內(nèi)容:

{% verbatim %}
 {{if dying}}Still alive.{{/if}}
{% endverbatim %}
登錄后復(fù)制

? ?

這個標簽不支持嵌套,但是你可以為標簽添加名字:

{% verbatim myblock %}
 Avoid template rendering via the {% verbatim %}{% endverbatim %} block.
{% endverbatim myblock %}
登錄后復(fù)制

? ?

這樣,Django會尋找myblock的endverbatim作為結(jié)束的標志,中間插入了verbatim標簽,會作為myblock中不解釋的一部分處理。

這種方案的優(yōu)點是,不會增加代碼的復(fù)雜度,并且是Django的原生支持,對Angular也沒有影響。缺點是可能在很多地方用到很多verbatim標簽,搞得template很亂。

三、 使用第三方插件

目前,我已知的有django-angular。這個插件有混合django和angular標簽的功能。

正確解析angular標簽的同時,還可以繼續(xù)使用django的if等標簽。

{% load djng_tags %}
{% angularjs ng %}
<div{% if ng %} ng-repeat="item in items"{% endif %}>
 <h4><a ng-href="{{ item.absolute_url }}"{% if not ng %} href="{{ item.absolute_url }}"{% endif %}>{{ item.name }}</a></h4>
 <img  ng-src="{{ item.image.url }}"{% if not ng %} src="{{ item.image.url }}"{% endif %}    style="max-width:90%" height="{{ item.image.height }}" / alt="解決Angular.Js與Django標簽沖突的方案" >
 <div{% if ng %} ng-bind-html="item.description"{% endif %}>{% if not ng %}{{ item.description }}{% endif %}</div>
</div>
{% endangularjs %}
登錄后復(fù)制

? ?

這樣做的缺點是,引入插件增加了代碼的復(fù)雜度,團隊的所有人都需要學習這種寫法,我個人感覺,也比較容易增加錯誤。

我覺得第二種比較合適, 寫入變量的時候盡量前后端分開,django負責返回靜態(tài)的模板,數(shù)據(jù)交給angular,沒大問題。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

更多解決Angular.Js與Django標簽沖突的方案相關(guān)文章請關(guān)注PHP中文網(wǎng)!

最佳 Windows 性能的頂級免費優(yōu)化軟件
最佳 Windows 性能的頂級免費優(yōu)化軟件

每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應(yīng)法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號