一次性绑定两个元素,使其在页面加载时可见

One time bind two elements to be visible on page load

本文关键字:加载 绑定 元素 两个 一次性      更新时间:2023-09-26

我使用外部过滤服务和ngGrid来显示我的数据。有一些控件(文本框、搜索按钮)我希望隐藏起来,直到填充表数据的承诺得到解决,但只能在页面加载时隐藏。页面加载后,我希望ngGrid外部的静态HTML保持可见。我现在有一个类似的标志

//first line in controller
$scope.isUpdating = true;
var getData = function(){
    $scope.isUpdating =true;
    ngGridDataPromise.then(function(){//operations..})
                 .finally(function(){ $scope.isUpdating = false });
}

因此,我有一个函数,它的第一个操作是设置isUpdating = true,并且在该函数内部有一个promise,它的最终设置为isUpdating=false。我遇到的问题是,当请求发生时,有一个很小的时间窗口,承诺没有得到解决,我模板上的ng show也没有显示我需要的控件。

HTML

<div ng-show="!isUpdating"><buttons></buttons></div>

我如何使isUpdating绑定只关心初始页面加载,或者是否有更多的框架类型的功能可以利用?Angular版本-1.2.26

EDIT:使用另一个外部依赖不是一个选项,我正在寻找一种有角度的方式,或者一个聪明的JS解决方案。

我不能100%确定我是否遵循了您的要求,但我相信您希望在第一次调用getData时隐藏控件,直到它完全解决,但不用于同一会话上的后续请求?如果是这样的话,我相信这会奏效:

//first line in controller
$scope.isUpdating = true;
var firstLoad = true;
var getData = function(){
    if(firstLoad) {
        $scope.isUpdating = true;
        firstLoad = false;
    }
    ngGridDataPromise.then(function(){//operations..})
             .finally(function(){ $scope.isUpdating = false });
}