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

时间:2018-03-27 21:04:27

标签: javascript html angularjs

我们有一个复杂的编辑表格,特别是这段代码:

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

答案 0 :(得分:1)

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

ng-show

您应该使用ng-if代替ng-show

ng-if确定是否创建了元素,如果条件为false,则不会创建DOM并且不会调用ImageSelector

ng-if

所以,试试吧 <uib-tab ng-if="currentItDraftHeader.treeType===2">

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

如果您不想promises

async / await 是一个不错的选择

相关问题