Flask + AngularJS - 使用url_for()

4 投票
2 回答
1044 浏览
提问于 2025-04-18 03:58

我在我的应用程序中使用 AngularJS 和 Flask,我想知道最好的方法来“生成”一个网址,而不是写死网址。我遇到了这样的情况:

*考虑到我在 AngularJS 中使用 [[ ]] 而不是 {{ }}。

<dd ng-repeat="item in myList">
    <span ng-click="doAction('{{ url_for('my_url', id="[[item.id]]") }}')">
      [[item.name]]
    </span>
</dd>

这样做是行不通的,因为 Jinja2 会在 AngularJS 之前处理 url_for(),所以 "[[item.id]]" 不会及时被 AngularJS 替换。

问题是,我不想像这样写死网址:

<span ng-click="doAction('/my_url/[[item.id]]')">
    [[item.name]]
</span>

我对 AngularJS 还很陌生,也许我的方法都是错的,所以,有没有人知道最好的办法,让一个元素被点击后,根据被点击元素的上下文来发起请求?

2 个回答

1

在我的情况下,

我想要动态生成网址。

我通过以下方式解决了我的问题(注意:我把Angular的语法换成了{[x]}):

<ul>
    <li ng-repeat="x in projects">
        {[x.title]}
        {% set url = url_for('static',filename="img/") %}

        <img src="{{url}}{[x.img]}">
    </li>
</ul>
1

我刚碰到这个问题。最后我用了Jinja2的{% set ... %}

这是我解决这个问题的方法,已经根据你的例子进行了调整。

<dd ng-repeat="item in myList">
    {% set url = url_for('my_url', id="[[item.id]]") %}

    <span ng-click="doAction('{{ url }}')">
        [[item.name]]
    </span>
</dd>

撰写回答