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

标签 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 表单正在被调用,并且来自其 Controller 的代码也被执行。我怎样才能防止这种情况发生?我还有另一个问题 - 我有 LoadView 方法,它有几个函数,每个函数都调用服务来获取数据。我想在第一个请求失败后立即停止代码的执行,但由于它们都是异步的,所以我认为它们都已执行。防止在第一个错误后调用不必要代码的最佳方法是什么?

最佳答案

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看看如何处理。

async / await 如果你不想的话,这是一个很好的选择 promises

关于javascript - angularJs - 如何防止执行额外的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49522377/

相关文章:

javascript - Typescript - "this"关键字错误

html - Flexbox 等高(具有不同大小的内容)不起作用

带有标题和文本的 html5 大纲

javascript - 在 AngularJS 中异步加载数据的正确方法

javascript - 如何触发 :active pseudoclass on keyboard 'enter' press?(仅使用 CSS)

javascript - fontWeight 不起作用时如何使 HTML5 字体更亮?

css - 无法让 Angular 动画工作

javascript - 使用 JQuery.MSDropDown 更新 selectedIndex 选项菜单

javascript - 我怎样才能从 angularjs 中的 datetimepicker 中只选择日期?

javascript - 为什么使用 $route (AngularJS) 更改时带有此流程图的 div 无法正确调整大小