Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完成ng hide后添加函数_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 完成ng hide后添加函数

Javascript 完成ng hide后添加函数,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个tr: <tr ng-hide="func(item.status)" ng-repeat="item in itemArray" > <td></td> . . </tr> 如何在执行所有ng hide语句以获得正确结果后才更新qVisible?我假设您在某个地方有一个类似于..的下拉列表 <select ng-model="selectedStatus" ng-options="status for status in st

我有一个tr:

<tr  ng-hide="func(item.status)"  ng-repeat="item in itemArray" >
<td></td>
.
.
</tr>

如何在执行所有ng hide语句以获得正确结果后才更新qVisible?

我假设您在某个地方有一个类似于..的下拉列表

<select ng-model="selectedStatus" ng-options="status for status in statuses"></select>
在您的html中

<div ng-show="qVisible">...</div>
。。。

这是一种不接触DOM的方法。

我假设您在某个地方有一个下拉列表,看起来像

<select ng-model="selectedStatus" ng-options="status for status in statuses"></select>
在您的html中

<div ng-show="qVisible">...</div>
。。。

这是一种不接触DOM的方法。

您可以让$watch监听与数据相同的数据,ng repeat运行与隐藏相同的功能:

function update(newValue) {
    var i;
    $scope.numberOfShownItems = 0;

    for (i = 0; i < newValue.length; i += 1) {
        if ($scope.func(newValue[i])) {
            $scope.numberOfShownItems += 1;
        }
    }

    $scope.qVisible = !!$scope.numberOfShownItems;
}

$scope.items = [1,2,3,4,5,6];    

$scope.func = function (item) {
    if (item % 2 === 0) {
        return true;
    }

    return false;
}

$scope.$watch('items', update);
函数更新(newValue){
var i;
$scope.numberOfShownItems=0;
对于(i=0;i
例如:

您可以让$watch监听与数据相同的数据,ng repeat运行与hide相同的功能:

function update(newValue) {
    var i;
    $scope.numberOfShownItems = 0;

    for (i = 0; i < newValue.length; i += 1) {
        if ($scope.func(newValue[i])) {
            $scope.numberOfShownItems += 1;
        }
    }

    $scope.qVisible = !!$scope.numberOfShownItems;
}

$scope.items = [1,2,3,4,5,6];    

$scope.func = function (item) {
    if (item % 2 === 0) {
        return true;
    }

    return false;
}

$scope.$watch('items', update);
函数更新(newValue){
var i;
$scope.numberOfShownItems=0;
对于(i=0;i
例如:

您能想出一种方法来做到这一点,而不必查询控制器中的dom吗?我只需要计算可见行的数量。我能想到的最糟糕的情况是每次调用func时o手动更新一个var…(这不是一个好的解决方案)您能想出一种方法来做到这一点而不查询控制器中的dom吗?我只是计算可见行的数量。我能想到的最糟糕的情况是每次调用func时o手动更新一个var…:)这不是一个好主意solution@BhumiSinghal我认为您试图做的是“过早优化”.即使考虑优化..查询DOM也很慢..至少比运行一个小for循环慢得多。ohk…我已经有一个循环..我现在正在尝试适应计算var@BhumiSinghal我假设您对Angular比较陌生。学习Angular的最好方法是忘记使用JQuery的方法avent已经看过了,首先看看这个,你可以从你的项目中删除jquery。只有在绝对必要的时候才包括jquery。是的,我对Angular非常陌生,是的,我只想用Angular的方式来做……但是在极度需要jquery的时候坦率地说,你可以在angularjs中构建一个巨大的项目,而不包括jquery。因此,这是可能的。你只需要找到一种方法。不要屈从于jquery操纵DOM的老方法。@BhumiSinghal我认为你试图做的是“过早优化”.即使考虑优化..查询DOM也很慢..至少比运行一个小for循环慢得多。ohk…我已经有一个循环..我现在正在尝试适应计算var@BhumiSinghal我假设您对Angular比较陌生。学习Angular的最好方法是忘记使用JQuery的方法avent已经看过了,首先看看这个,你可以从你的项目中删除jquery。只有在绝对必要的时候才包括jquery。是的,我对Angular非常陌生,是的,我只想用Angular的方式来做……但是在极度需要jquery的时候坦率地说,您可以在angularjs中构建一个大型项目,而不包括jquery。因此,这是可能的。您只需要找到一种方法。不要屈服于旧的jquery方式来操作DOM。