Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Python和angular在变量值上存在分歧_Javascript_Python_Angularjs_Flask_Jinja2 - Fatal编程技术网

Javascript Python和angular在变量值上存在分歧

Javascript Python和angular在变量值上存在分歧,javascript,python,angularjs,flask,jinja2,Javascript,Python,Angularjs,Flask,Jinja2,所以,为了恰当地构建这个框架,我在这里继承了一个代码库,我对angular没有深入的了解。基本上,有一个应用程序根据数据库导入是否完成来显示或隐藏加载的gif 但出于某种原因,尽管数据集导入已完成,angular仍无法识别它。简化代码示例如下: <h4>Status <small ng-hide="dataset.failed">{{ dataset.status }}</small> <img class="pull-right" ng

所以,为了恰当地构建这个框架,我在这里继承了一个代码库,我对angular没有深入的了解。基本上,有一个应用程序根据数据库导入是否完成来显示或隐藏加载的gif

但出于某种原因,尽管数据集导入已完成,angular仍无法识别它。简化代码示例如下:

<h4>Status
    <small ng-hide="dataset.failed">{{ dataset.status }}</small>
    <img class="pull-right" ng-hide="(dataset.import_complete || dataset.failed)" src="/url" height="12">
</h4>
    <span>{{ dataset.import_complete }}</span>
另外,这里有一些后端,但可能不是很有帮助:

@route(bp, '/dataset/<int:dataset_id>', methods=["GET", "POST"])
更多信息,请参见
vars(数据集)

在NG运行之前,Jinja2是否插入了您的表达式? 不要忘记,Jinja和Angular都使用相同的
{
}
标记作为语法

在我看来,您似乎正在使用Jinja来呈现该HTML,如果该HTML也包含您的AngularJS代码,那么在AngularJS在浏览器上运行之前,
{{expr}}
会被Flask/Jinja插值

我猜你在HTML中看到的
True
来自Jinja2对这个表达式的渲染(不是角度)

这似乎是可能的,但我不知道如何调试它

因此,我建议您查看
dataset
对象的值,如下所示

{{dataset}

或者
{{dataset}{json}

,然后您可以确定它的值和类型


您还可以查看浏览器的“开发工具网络”选项卡,查看Flask后端发送回AngularJS的内容。

我怀疑这是Python中的这些值没有序列化为正确的JS的问题?例如,Python的
True
=>JavaScript的
True
。您正在将
ng hide
设置为字符串
(dataset.import|compete | dataset.failed)
。您既没有使用Python也没有使用JavaScript变量。@dirn真的吗?简单阅读angularjs文档似乎意味着我在这里使用了正确的语法。我还在应用程序的许多其他地方使用相同的语法,没有问题。我会更改什么?@dirn另外,删除引号会导致分析错误。@RyanGonzalez这似乎是可能的,但我不知道如何调试它。我试着使用Batarang插件,但它不起作用。有什么建议?谢谢你的想法!因此,import_complete实际上是True,但不是字符串。我不确定在这里如何处理角度方面的类型,但正如所发布的
==“True”
计算结果为
false
。删除引号时,其计算结果为
true
。似乎与@RyanGonzalez的建议非常一致。关于这些类型发生了什么,有什么想法吗?哦,另外,为了澄清为什么目前不接受这种情况,出于某种原因,
==True
即使在dataset.import\u complete为False时也是True。我我真的不知道这里发生了什么,但这看起来像是某种可怕的类型转换巫术。我会在几分钟内接受,但如果你能解释一下这一点,我将不胜感激。我也很困惑,但我相信如果你足够深入的话,会有一个解释的。e、 g.什么是数据集的
类型。在JS中导入完整的
?还要查看HTTP中发送的内容吗?e、 g.在浏览器网络选项卡中?例如,据推测,AngularJS通过API
“/dataset/123”
提取数据,在AngularJS接收数据时查看该数据是很有帮助的(不要使用
type(x)
探测Python端),而是探测JS端,可能还有浏览器的开发工具网络选项卡
@route(bp, '/dataset/<int:dataset_id>', methods=["GET", "POST"])
dataset = Dataset.query.get_or_404(dataset_id)

return render_template(
    'manage/dataset.html',
    dataset=dataset,
)
{'import_complete': True, 'failed': False, 'pending_deletion': False}
<span>{{ dataset.import_complete }}</span>
ng-hide="dataset.import_complete == 'True'"