我们有一个复杂的编辑表格,特别是这段代码:
<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方法,它有几个函数,每个函数调用服务来获取数据。我想在第一个请求失败时立即停止执行代码,但由于它们都是异步的,我认为它们都已执行。在第一次出错后,防止调用不必要代码的最佳方法是什么?
答案 0 :(得分:1)
ng-show
确定元素是否可见,但无论如何都会创建DOM
,因此会调用ImageSelector
,
您应该使用ng-if
代替ng-show
ng-if
确定是否创建了元素,如果条件为false
,则不会创建DOM
并且不会调用ImageSelector
。
所以,试试吧
<uib-tab ng-if="currentItDraftHeader.treeType===2">
对于第二个问题,你必须等待第一个请求检查它是否失败然后继续到另一个,看看promises看看如何处理它。
如果您不想promises
,async / await 是一个不错的选择