聚合物表达

时间:2014-08-08 17:21:11

标签: php json expression polymer

我尝试使用Polymer expressions来展示某些内容。

我有一个.php文件打印出一个json_encoded数组,例如名称。现在我看到了3种可能性:

  1. 正确返回名称列表
  2. 在数据库中找不到名称,因此打印null或其他内容
  3. php文件中出现错误
  4. 因此,根据返回的内容,我想显示相关信息。

    可以使用<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内容?

1 个答案:

答案 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

相关问题