我尝试使用Polymer expressions来展示某些内容。
我有一个.php
文件打印出一个json_encoded数组,例如名称。现在我看到了3种可能性:
null
或其他内容因此,根据返回的内容,我想显示相关信息。
可以使用<template if="{{conditionalValue}}">
完成此操作。这就是我所拥有的:
<template if="{{people != null}}">
<template repeat="{{person in people}}">
<name-card name="{{person.name}}">
</album-card>
</template>
</template>
<template if="{{people == null}}">
<div>There are no people listed.</div>
</template>
这似乎不起作用。当.php
文件返回一个列表时,顶部模板都会被执行,我会获得<name-card>
个元素的完整列表。但是,当在php文件中我执行echo json_encode(null)
测试时,根本没有任何显示。所以我必须对conditionalValue做错事。如何测试这是否是包含元素的数组?
另外,如果php脚本出错,有没有办法测试非json内容?
答案 0 :(得分:2)
使用Chrome(或其他工具)的开发人员控制台来查看对PHP脚本的调用实际返回的内容(因为&#34; null
或其他内容&#34; 有点模糊。)
然后在某个时刻记录people
属性的内容以查看其中的实际内容。我怀疑这个属性真的是null
。大概是""
或[]
(甚至"null"
)。
如果people
确实为空,那么您的代码运行正常。可以使用仅包含两个模板的小测试元素来验证这一点,并直接在people
函数中设置created()
属性。
在所有其他情况下,它取决于。如果空案例是空数组,则可以编写例如:
<template if="{{people.length > 0}}">
和
<template if="{{people.length == 0}}">
关于非json响应错误的问题:它又取决于。如果您自己用JSON.parse()
解析JSON内容,那么它会在出现错误时抛出异常。如果使用core-ajax
,则其当前实现会捕获错误,记录警告并返回XHR响应文本。因此,您可能希望扩展此元素并覆盖jsonHandler()
函数。或者使用core-xhr
并自己实现JSON解析。
处理错误的最佳方法是始终返回有效的JSON响应(使用"error"
或"message"
等属性)并使用HTTP状态代码。有关详细信息,请参阅此SO question。