【发布时间】:2016-04-30 18:23:39
【问题描述】:
所以,为了恰当地构建这个框架,我在这里继承了一个代码库,但我对 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>
我为调试目的添加的 span,但实际上 span 显示 True,而上面的 img 标签仍在显示。这意味着 Angular 正在将 dataset.import_complete || dataset.failed 评估为 False。
为什么会发生这种情况?任何有助于调试此行为的建议将不胜感激。
更新: 我认为这里的想法是这里发生了一些错误的类型检查。具体来说,以下似乎是正确的:
# Always evaluates to True, regardless of import_complete
dataset.import_complete == True
# Always evaluates to False, again, regardless of import_complete
dataset.import_complete == 'True'
# result is bool, as it should be, making this only more baffling
type(dataset)
另外,这里有一点后端,但可能不是很有帮助:
@route(bp, '/dataset/<int:dataset_id>', methods=["GET", "POST"])
def 数据集(dataset_id): """返回数据集管理页面"""
dataset = Dataset.query.get_or_404(dataset_id)
return render_template(
'manage/dataset.html',
dataset=dataset,
)
更多信息,这里是vars(dataset)的输出:
{'import_complete': True, 'failed': False, 'pending_deletion': False}
【问题讨论】:
-
我怀疑这是 Python 中的这些值没有被序列化为正确 JS 的问题?例如,Python 的
True=> JavaScript 的true。 -
您将
ng-hide设置为字符串(dataset.import_compete || dataset.failed)。您在那里既没有使用 Python 也没有使用 JavaScript 变量。 -
@dirn 真的吗?简要阅读 angularjs 文档似乎暗示我在这里使用了正确的语法。我也在应用程序的许多其他地方使用相同的语法,没有问题。我会改变什么?
-
@dirn 此外,删除引号会导致解析错误。
-
@RyanGonzalez 这似乎是可能的,但我不知道如何调试它。我尝试使用 Batarang 插件,但它不起作用。有什么建议吗?
标签: javascript python angularjs flask jinja2