Polymer 聚合物,如何在渲染其他元素之前等待核心ajax完成?

Polymer 聚合物,如何在渲染其他元素之前等待核心ajax完成?,polymer,Polymer,更新:以下是针对这种情况的文档: 此应用程序应执行以下操作: 使用核心ajax组件从DB获取项目位置(本例中为JSON) 使用google地图组件显示带有标记的地图 当用户拖动市场时,使用核心ajax将新位置保存到DB 问:如何让GoogleMap组件等待渲染,直到AJAX请求完成 当前出现此错误: “在observer回调期间捕获异常:TypeError:latitude必须是一个数字”,我假设这是因为google map是在启动{{project_location}}之前呈现的 &

更新:以下是针对这种情况的文档:

此应用程序应执行以下操作:

  • 使用核心ajax组件从DB获取项目位置(本例中为JSON)
  • 使用google地图组件显示带有标记的地图
  • 当用户拖动市场时,使用核心ajax将新位置保存到DB
  • 问:如何让GoogleMap组件等待渲染,直到AJAX请求完成

    当前出现此错误: “在observer回调期间捕获异常:TypeError:latitude必须是一个数字”,我假设这是因为google map是在启动{{project_location}}之前呈现的

         <core-ajax id="ajax_get_location"
            auto
            url="project_location.json"
            params='{"idProject":"{{idProject}}"}'
            on-core-response="{{locationLoaded}}"
            handleAs="json"
            response = "{{project_location}}"></core-ajax>
    
    
    
         <google-map id="project_location_map" 
              zoom="{{project_location.location_map_zoom}}" 
              fitToMarkers>
          <google-map-marker 
                       latitude  ="{{project_location.location_map_marker_latitude | toFixed(2)}}"
                       longitude ="{{project_location.location_map_marker_longitude | toFixed(2)}}"
                       title     ="{{project_title}}" 
                       draggable ="true"
                       >
           {{project_title}}
          </google-map-marker></google-map>
    
    
    {{project_title}}
    
    您可以在core axax完成后更改模型上的值,并用
    包装其他元素。我认为最干净的方法是不要将此视为
    的计时问题。从根本上说,问题在于,在为
    项目位置
    提供值之前,您不希望在页面上包含
    元素。在您的代码片段中,
    project\u location
    值来自
    ,但是您可以很容易地想象一个不同的实现,其中
    project\u location
    通过其他方式填充

    因此,如果您这样想,那么将
    包装在一个条件模板中是有意义的,该模板检查
    项目位置的值:

    <template if="{{project_location}}">
      <google-map>
         ...
      </google-map>
    <template>
    
    
    ...
    
    除了其他人所说的,本教程还演示了另一种方法,即创建另一个元素来实现ajax,并在原始元素中使用它。数据传输是通过属性和数据绑定实现的

    我认为这是一种更好的方法,因为您将数据显示与数据获取分离,使其在软件工程中看起来更好


    另外,我试过其他答案,但我发现无论你是否使用
    条件都无关紧要。

    你确定吗?我试过了,发现无论你是否使用
    if
    ,都不会影响结果。它只在您得到响应后出现。无论您是通过另一个元素直接或间接使用核心ajax,模板中的“if”条件都是必须的。有时AJAX响应比其他元素的呈现更快,在这种情况下,您不会注意到问题——其他元素的数据将在那里。可能在您的测试中发生了这种情况。@goceribeski但在我的测试中,我让后端脚本休眠了2秒钟,并且没有使用
    if
    条件,模板仍然会等待2秒钟才会出现。