Javascript 加载所有内容后,显示具有多个ng repeat的表单

Javascript 加载所有内容后,显示具有多个ng repeat的表单,javascript,angularjs,Javascript,Angularjs,我有一个有多个ng重复块的表单,其他块没有ng重复。在呈现表单之前,如何等待所有内容加载完毕 例如 <form name="forms.confirmForm" ng-submit="submitForm()"> <div> <div ng-repeat="phone in candidate.phones" style="position:relative"> -- write out some value &l

我有一个有多个ng重复块的表单,其他块没有ng重复。在呈现表单之前,如何等待所有内容加载完毕

例如

<form name="forms.confirmForm" ng-submit="submitForm()">

    <div>
      <div ng-repeat="phone in candidate.phones" style="position:relative">
       -- write out some value 
    </div>

    <div class="small-12">
      <label>first name
      </label>
      <input name="firstName" type="text"  />

      <div ng-repeat="phone in candidate.email" style="position:relative">
           -- write out some value 
      </div>
    </div>

    <div class="apply-bar">
        <button class="button button-apply" type="submit">
          apply
        </button>
    </div>
</form>
**该信息来自一个模型,并加载一次。ng repeat只是获取模型的一部分,并迭代使用ng if检查是否已加载数组项

<form name="forms.confirmForm" ng-submit="submitForm()"
      ng-if="candidate.phones.length > 0 && candidate.email.length > 0">

如果在您的div中:

<div ng-if="candidate.phones">
  <div ng-repeat="phone in candidate.phones" style="position:relative">
   -- write out some value 
  </div>` 

有两种方法可以处理这个问题

你用一组空的电话/电子邮件初始化你的模型candiate。在这种情况下,您不需要在模板中执行任何操作,因为ng重复将应用0次。导致没有任何渲染。 在没有modelcandidate时使用ng if阻止渲染,和/或在模型没有电话/电子邮件时使用ng if阻止ng重复尝试渲染。 基于第二个选项尝试此操作

<form name="forms.confirmForm" ng-submit="submitForm()">

    <div ng-if="candidate"> <!--Prevent rendering if there is no candiate model-->
        <div
            ng-if="candidate.phones" <!--Prevent rendering if canidate doesn't have phones param-->
            ng-repeat="phone in candidate.phones"
            style="position:relative"
        >
            -- write out some value
        </div>

        <div class="small-12">
            <label>first name
            </label>
            <input name="firstName" type="text"/>

            <div
                ng-if="candidate.email"
                ng-repeat="phone in candidate.email"
                style="position:relative"
            >
                -- write out some value
            </div>
        </div>

        <div class="apply-bar">
            <button class="button button-apply" type="submit">
                apply
            </button>
        </div>
    </div>
</form>

谢谢,但有时我可能没有任何电话或电子邮件。这种解决方案意味着电话和电子邮件都必须存在,然后才能呈现。您也不需要检查长度是否大于0,只需将长度作为布尔值进行检查即可。0将等于false,1或多个将等于true。如何加载所有内容?您是否有多个$http请求?如果是,那么您可以收集他们的承诺并运行$q.all以进行同步。只需在中设置某种标志,然后在成功回调时,在表单上使用ng if=flag,您的第一种方法将显示包括提交按钮在内的内容。ng if我认为OP正在查找的内容。表单标记没有可见属性,提交按钮与ng if=candidate包装在同一个div中,因此它不可见。