最近要弄一个带交互界面的豆瓣爬虫,决定使用Python(django)+angular js。等到接触django后才发现有一些问题,整理点心得。
难点一:django和angular都有“{{}}”
在HTML页面中使用数据绑定“{{}}”,如果本意是使用angular,则不能实现,会被Python后端解析。
解决办法:使用$interpolateProvider,改变数据绑定标记
参考文档 http://docs.angularjs.cn/api/ng/provider/$interpolateProvider
加入如下的controller.js代码,将“{{}}”变为“//”,从而区分
var customInterpolationApp = angular.module('customInterpolationApp', []);
customInterpolationApp.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('//');
$interpolateProvider.endSymbol('//');
});
customInterpolationApp.controller('DemoController', function($scope) {
$scope.label = "This binding is brought you by // interpolation symbols.";
});
HTML页面中便能直接使用
<div ng-app="customInterpolationApp" ng-controller="DemoController as demo">
//label//
<p>hello, //label//</p>
</div>
难点二:单独建一个js文件时,可能上述改变仍不生效
最开始,我在index页面中引入controller.js代码,依旧是错误。思来想去,当时无意中,把angular.js换到了controller.js的前面,然后就生效了,好神奇。
<script src="http://apps.bdimg.com/libs/angular.js/1.4.0-beta.4/angular.min.js"></script>
<script src="../../static/douban/js/controller.js"></script>
估计是页面加载的时候,先加载前面的。如果把controller放在前面,还不能识别里面的angular标记,导致解析识别吧。
欢迎高手指正!!