代码之家  ›  专栏  ›  技术社区  ›  Naomi

angularJs-如何防止执行额外代码

  •  1
  • Naomi  · 技术社区  · 8 年前

    我们有一个复杂的编辑表单,其中特别包含以下代码:

    <uib-tab ng-show="currentItDraftHeader.treeType===2">
        <uib-tab-heading>
            <i class="fa fa-picture-o"
                uib-tooltip="@Labels.images"
                tooltip-placement="bottom">
            </i>
        </uib-tab-heading>
        @Html.Partial("ImageSelector")
    </uib-tab>

    加载表单时,有一个错误阻止创建currentItDraftHeader。然而,ImageSelector表单正在被调用,来自其控制器的代码也会被执行。我如何防止这种情况发生?我还有一个问题-我有LoadView方法,它有几个函数,每个函数都调用服务来获取数据。我想在第一个请求失败后立即停止代码的执行,但由于它们都是异步的,我认为它们都已执行。防止在第一个错误后调用不必要代码的最佳方法是什么?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Taki    8 年前

    ng-show 确定元素是否可见,但 DOM 因此,无论如何都是创建的 ImageSelector 被调用,

    ng-show

    您应该使用 ng-if 而不是 ng展会

    ng如果 确定是否创建元素(如果条件为 false 然后 DOM 不会创建,并且 图像选择器 儿子不能被调用。

    ng-if

    那么,试试这个 <uib-tab ng-if="currentItDraftHeader.treeType===2">

    对于第二个问题,您必须等待第一个请求来检查它是否失败,然后继续处理另一个,查看 promises 看看如何处理。

    async / await 如果你不想 promises