我们有一个复杂的编辑表单,其中特别包含以下代码:
<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 表单正在被调用,并且来自其 Controller 的代码也被执行。我怎样才能防止这种情况发生?我还有另一个问题 - 我有 LoadView 方法,它有几个函数,每个函数都调用服务来获取数据。我想在第一个请求失败后立即停止代码的执行,但由于它们都是异步的,所以我认为它们都已执行。防止在第一个错误后调用不必要代码的最佳方法是什么?
最佳答案
ng-show
确定元素是否可见但 DOM
无论如何都会创建,因此 ImageSelector
被调用,
你应该使用ng-if
而不是 ng-show
ng-if
如果条件为 false
,则确定是否创建元素然后是 DOM
不会被创建并且ImageSelector
子不被调用。
所以,试试这个
<uib-tab ng-if="currentItDraftHeader.treeType===2">
对于第二个问题,你必须等待第一个请求检查它是否失败然后继续另一个,看看promises看看如何处理。
async / await 如果你不想的话,这是一个很好的选择 promises
关于javascript - angularJs - 如何防止执行额外的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49522377/