由于我想将AngularJS与Flask结合使用,因此我搜索了一个很好的工具来正确处理这些框架,因为Jinja和Angular之间会有问题。我发现Triangle非常酷而且很有效但只是达到了一定程度。这样的东西可以用作例如:
public void progress(int current, int total) {
if (notificationManager != null && builder != null) {
builder.setProgress(total, current, false);
notificationManager.notify(idNotification, builder.build());
}
}
但另一方面,这不起作用:
<a ng-show="post.link" href="{{post.link|angular}}">
{{post.title|angular}}
</a>
当我尝试这样做时,我收到以下错误
jinja2.exceptions.TemplateSyntaxError
TemplateSyntaxError:875
意外查询'$'
我做错了什么,或者框架在这种情况下是否有限?非常感谢帮助。
答案 0 :(得分:5)
正如错误消息所述,$
无法使用var app = angular.module('Application', []);
app.config(['$interpolateProvider', function($interpolateProvider) {
$interpolateProvider.startSymbol('{a');
$interpolateProvider.endSymbol('a}');
}]);
。
相反,您需要Jinja as part of a variable:
def getActors(item_url): response = requests.get(item_url) soup = BeautifulSoup(response.content, "lxml") # or BeautifulSoup(response.content, "html5lib") tempActors = [] try: tempActors.append(soup.find(text="Actors:").find_parent("tr").find_all(text=True)[1:]) except AttributeError: tempActors.append("n/a") return tempActors
为开始和结束符号选择的任何内容都将充当新的分隔符。在这种情况下,您将表达一个变量&gt;使用{a some_variable a}到Angular。
答案 1 :(得分:4)
只需查看角度过滤器代码,看起来引用字符串并应用角度过滤器应该可以正常工作。
<span>
<a href="#/posts/{{'$index'|angular}}">Comments</a>
</span>
以下是从https://github.com/morgan-del/flask-triangle
复制的角度过滤器代码def angular_filter(value):
"""
A filter to tell Jinja2 that a variable is for the AngularJS template
engine.
If the variable is undefined, its name will be used in the AngularJS
template, otherwise, its content will be used.
"""
if is_undefined(value):
return '{{{{{}}}}}'.format(value._undefined_name)
if type(value) is bool:
value = repr(value).lower()
return '{{{{{}}}}}'.format(value)