在angularjs范围变量

时间:2017-09-09 13:25:18

标签: javascript angularjs angularjs-scope angularjs-ng-repeat

我正在制作画廊和图片。我正在使用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?

提前感谢, 祝你有愉快的一天。

1 个答案:

答案 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())