我正在使用名为Sheetsu的服务,该服务会将Google表格转换为RESTful API(非常糟糕!)。无论如何,我将它与MDC Library(材料设计组件)结合使用,但是我的UI无法正确呈现,因为该服务在运行JS后会引入数据。 MDC提供的功能mdc.autoInit()将自动初始化组件,这对于静态网站非常有用。但是对于我的用例而言,这还不够。

我有一个肮脏的破解程序,现在可以正常工作了。.但是我正在寻找正确的方法。谁能告诉我如何使用Sheetsu正确初始化我的MDC组件?

Codepen:https://codepen.io/oneezy/pen/qxayvY



HTML:

<section sheetsu="https://sheetsu.com/apis/v1.0su/1ea3e5b69776">
    <div class="mdc-text-field" data-mdc-auto-init="MDCTextField">
         <input type="{{TYPE}}" class="mdc-text-field__input" id="{{ID}}">
         <label for="{{ID}}" class="mdc-text-field__label">{{LABEL}}</label>
    </div>
</section>


JS:

<!-- Libraries -->
<script src="//load.sheetsu.com"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script src="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.js"></script>

$(document).ready(function() {
  setInterval(function(){
    mdc.autoInit();
    dataBind();
  }, 1000);
});


在此先感谢您的帮助!

最佳答案

我设法在某种程度上解决了这个问题,但是我确信有更好的方法。在这里发布此答案,希望对其他人有所帮助:D

问题是数据在所有其他内容之后都被加载..因此,通过结合使用$.when()$.done()方法和w / setTimeout,我能够实现目标。

Codepen:https://codepen.io/oneezy/pen/qxayvY

  function applicationFILE() {
    return $.ajax({
        url: "https://sheetsu.com/apis/v1.0su/c6876062929d"
        // dataType: "json",
        // data:  yourJsonData
    });
  }

  function testFILE() {
      return $.ajax({
          url: "https://sheetsu.com/apis/v1.0su/1ea3e5b69776"
          // dataType: "json",
          // data:  yourJsonData
      });
  }

  $(document).ready(function() {
    $.when(applicationFILE(), testFILE()).done(function(){
      setTimeout(function(){
        mdc.autoInit();
      }, 2000);
    });
  });

关于javascript - RESTful API正常运行,但无法正确呈现UI(MDC + Sheetsu),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48677860/

10-09 05:44