我正在制作画廊和图片。我正在使用Flask,AngularJS,MongoDB(和mongoengine)。我通过API显示了所有对象。
我有两种物体: - 画廊对象由id:int,title:string,owner:string,date:string,content:array []等定义... - 图片对象由id:int,title:string,owner:string,date:string等定义...
在作为数组的画廊内容中,我获得了画廊的所有ID。 [MongoDB样本] [1]
当用户点击相关图库时,我尝试列出HTML页面模板中的所有图片。 为此,我在控制器中使用$ scope变量,在HTML端使用ng-repeat。
控制器:
$scope.gallery = Galleries.get({id: $routeParams.id}, function (gallery) {
for (var i = 0; i < gallery.content.length; i++){
gallery.picture = Picture.get({id: $scope.gallery.content[i].split('-')[1]});
}
});
HTML :
<tr ng-repeat="pict in gallery">
<td>{{pict.fileID}}</td>
<td>{{pict.legend}}</td>
</tr>
不幸的是,只显示内容中的最后一张图片。范围内的全局变量并非以每个内容索引为基础。
如何将所有图片对象放在一个范围变量中,以便在HTML视图中使用ng-repeat?
提前感谢, 祝你有愉快的一天。
答案 0 :(得分:0)
get函数是从API(mongoengine)提供的:
@app.route('/api/galleries/<id>', methods=('GET', 'POST', 'DELETE'))
def galleries(id):
return handle_request(Galleries, id)
@app.route('/api/picture/<id>', methods=('GET', 'POST', 'DELETE'))
def picture(id):
return handle_request(Picture, id)
然后handle_request看起来像:
def handle_request(model, id):
def get_object():
try:
obj = model.objects(id=id).first()
except:
raise NotFound
if not obj:
raise NotFound
return obj
if request.method == 'GET':
check_allowed('READ', model)
try:
return jsonify(get_object().to_dict())
except NotFound:
abort(404)
elif request.method == 'POST':
check_allowed('UPDATE', model)
try:
obj = get_object()
except NotFound:
obj = model(id=id)
obj.from_dict(request.json)
obj.save()
return jsonify(obj.to_dict())