Javascript 从服务器端获取所有数据后,计算数据并进行渲染$(窗口)加载()不走运

Javascript 从服务器端获取所有数据后,计算数据并进行渲染$(窗口)加载()不走运,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个从服务器端获取所有数据并在页面中显示它们: <s:iterator id="lstActividades" value="impDesLst"> <tr> <td><input ng-change="actualizarDias();" type="text" class="form-control" name="produccionForm.minutosL<s:property value="%{activida

我有一个
从服务器端获取所有数据并在页面中显示它们:

<s:iterator id="lstActividades" value="impDesLst">
    <tr>
        <td><input ng-change="actualizarDias();" type="text" class="form-control" name="produccionForm.minutosL<s:property value="%{actividad.idActividad}" />" id="produccionForm.minutosL<s:property value="%{actividad.idActividad}" />" ng_model="minutosL<s:property value="%{actividad.idActividad}" />" ng-init="minutosL<s:property value="%{actividad.idActividad}" />='<s:property value="%{producciones[0].minutos}" />'" /></td>
现在,当我第一次进入页面时,如何加载结果

我的计算功能是:

$scope.actualizarDias = function(){
    tabla = document.getElementById('tablaProducciones').children[1];
    $scope.impL="";
    $scope.minutosTotalesL="";
    $scope.minutosTotalesLFormat="";
    for (var i=1; i<tabla.children.length*2; i++){
        if (i%2!=0) {
            var inputL = tabla.childNodes[i].cells[2].children[0].value;
            var inputAct = tabla.childNodes[i].cells[0].innerHTML;
            if($scope.impL=="" || $scope.impL==undefined){
                $scope.impL=inputAct + "-" + inputL;
                } else {
                $scope.impL+=";" + inputAct + "-" + inputL;
                }
            if (!isNaN(inputL) && inputL>0){
                if ($scope.minutosTotalesL=='' || $scope.minutosTotalesL==undefined){
                    $scope.minutosTotalesL=inputL;
                } else {
                    $scope.minutosTotalesL=parseInt($scope.minutosTotalesL) + parseInt(inputL);
                    }
                $scope.minutosTotalesLFormat = $scope.minutosAHoras($scope.minutosTotalesL);
                }
        }
    }
}
$scope.realizardias=function(){
tabla=document.getElementById('tablaProducciones')。children[1];
$scope.impL=“”;
$scope.minutosTotalesL=“”;
$scope.minutostototaleslformat=“”;
对于(var i=1;i0){
if($scope.minutosTotalesL=''| |$scope.minutosTotalesL==未定义){
$scope.minutosTotalesL=inputL;
}否则{
$scope.minutosTotalesL=parseInt($scope.minutosTotalesL)+parseInt(inputL);
}
$scope.minutosTotalesLFormat=$scope.minutosAHoras($scope.minutosTotalesL);
}
}
}
}

您只需调用控制器主体中的函数,以确保在创建控制器时执行该函数:

function MyController() {
    $scope.actualizarDias = function(){
        ...
    }

    $scope.actualizarDias();
}

尽管目前看来,这可能仍然会失败,因为您的控制器中有很多视图特定的代码,这是一个非常糟糕的想法。您应该更改代码的结构,以便将表中的数据加载到控制器并绑定到该控制器,而不是让控制器在表上迭代。

您只需调用控制器主体中的函数,以确保在创建控制器时执行该函数:

function MyController() {
    $scope.actualizarDias = function(){
        ...
    }

    $scope.actualizarDias();
}

尽管目前看来,这可能仍然会失败,因为您的控制器中有很多视图特定的代码,这是一个非常糟糕的想法。您应该考虑更改代码的结构,以便将表中的数据加载到控制器并绑定到该控制器,而不是让控制器在表上迭代。

谢谢您的评论,但它不起作用。问题是,在我们从服务器端获取数据之前,表中的行数是不确定的。虽然我们可以将
ng model
/
id
设置为
xxxx+numRow
,但我们事先不知道它在哪里结束。因此,我们无法绑定每个输入。我将尝试获取计算结果以及所有其他数据,尽管这可能会更困难。最后,我设法在服务器端进行计算,并将结果发送到客户端并呈现它们,尽管在浏览器中进行了计算。谢谢大家。谢谢你的评论,但它不起作用。问题是,在我们从服务器端获取数据之前,表中的行数是不确定的。虽然我们可以将
ng model
/
id
设置为
xxxx+numRow
,但我们事先不知道它在哪里结束。因此,我们无法绑定每个输入。我将尝试获取计算结果以及所有其他数据,尽管这可能会更困难。最后,我设法在服务器端进行计算,并将结果发送到客户端并呈现它们,尽管在浏览器中进行了计算。谢谢大家。