我在后端使用Django开发了一个应用程序,其中创建了一个API,可以使用angular读取前端中的信息。
我用$ http调用数据库中的人员列表,在我获取数据的函数中,并使用console.log显示并且是正确的,但是当我使用ng-repeat在模板中调用该信息时,内容div已创建但内部信息未显示,则保持空白。
我会很感激解决这个问题。
// custom-angular.js
var app = angular.module('SesamoApp', []);
var URL = '/api/projects/torres-de-monterrey/segmentation/';
app.controller('cardsCtrl',['$scope', '$http', function($scope, $http) {
$scope.cards = [
{email: 'email@correo.com', segment: 'low'}
];
$http({
method: 'GET',
url: URL
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
/*console.log(response.data);*/
$scope.data = response.data;
angular.forEach(response.data, function(value, key){
console.log(key + ': ' + value.email + ' -- ' + value.segment);
$scope.cards.push({email: value.email, segment: value.segment});
});
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
console.log($scope.cards);
}]);
// list.html
{% extends "base_app.html" %}
{% block main-container %}
<h1>Actividades de hoy</h1>
{% if activities %}
{% for activity in activities %}
{{activity.activity_type}}
{% endfor %}
{% else %}
<p>No tienes actividades programadas para hoy</p>
<hr />
<div class="segmentBlocks">
<div ng-app="SesamoApp">
<div class="cards" ng-controller="cardsCtrl">
<div class="card" ng-repeat="card in cards | orderBy:'segment'">
<p class="email">{{ card.email }}</p>
<p class="segment">{{ card.segment }}</p>
</div>
{{ data }}
</div>
</div>
</div>
{% endif %}
{% endblock %}
执行后的结果屏幕截图(无信息)
答案 0 :(得分:1)
我认为Django模板是在ngRepeat块中解析括号,作为Django模板的一部分,而不是将它留给Angular控制器。为什么不使用ngBind并将{{}}
和ng-bind="card.email"
属性添加到ng-bind="card.segment"
代码中,而不是在此使用p
?
否则,使用围绕相关角度块的verbatim
标记来逃避Django模板。
答案 1 :(得分:1)
您应该通过在app.js中添加此行,将角括号 {{}} 更改为 {$ $} 。
app.config(['$httpProvider', '$interpolateProvider', function($httpProvider, $interpolateProvider) {
$interpolateProvider.startSymbol('{$');
$interpolateProvider.endSymbol('$}');
}])
然后这样做
<div class="segmentBlocks">
<div ng-app="SesamoApp">
<div class="cards" ng-controller="cardsCtrl">
<div class="card" ng-repeat="card in cards | orderBy:'segment'">
<p class="email">{$ card.email $}</p>
<p class="segment">{$ card.segment $}</p>
</div>
{$ data $}
</div>
</div>
</div>