【问题标题】:Maximum call stack size exceeded in AngularJSAngularJS 中超出了最大调用堆栈大小
【发布时间】:2017-10-09 17:27:16
【问题描述】:

我正在使用 AngularJS 和 Web API 从 SQL 表中加载数据。我制作了一个函数,当从 HTML 表中选择一行时,它会在输入文本中显示值。调试时单击 html 表上的任何行时出现此错误。

HTML

<td>Code</td>
                <td><input type="text" size="10" pattern="^[a-zA-Z0-9]+$" title="Alphnumeric" required autofocus ng-model="selectedMember.Code.Staff_Type_Code">
                    <input type="text" size="10" hidden ng-model="selectedMember.sys_key" /> </td>
            </tr>
            <tr>
                <td>Latin Description</td>
                <td><input type="text" required size="35" ng-model="selectedMember.Latin.L_Desc"></td>
            </tr>
            <tr>
                <td>Local Description</td>
                <td><input type="text" required size="35" ng-model="selectedMember.Local.A_Desc"></td>
            </tr>


 <tbody>
            <tr ng-repeat="c in Contracts | filter:selectedMember.Code | filter:selectedMember.Latin | filter:selectedMember.Local ">

                <td style="display:none;"><a href="#" ng-click="showInEdit(c)">{{c.sys_key}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Staff_Type_Code}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.L_Desc}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.A_Desc}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Hours_Day}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Days_Week}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Type_EndWork}}</a></td>
                <td><a href="#" ng-click="showInEdit(c)">{{c.Num_EndWork}}</a></td>

            </tr>
        </tbody>

Controller.js

 $scope.selectedMember = {  Code: "",sys_key:"", Latin:"" , Local:"", Hours_Day :"", Days_Week:"", Num_EndWork:""  } 

$scope.showInEdit = function (member)
{
    debugger;
    $scope.selectedMember = member;
    $scope.selectedMember.Code = member;
    $scope.selectedMember.Latin = member;
    $scope.selectedMember.Local = member;

}

当我注释最后 3 行时,选定的行值不会显示在输入文本中。或者我必须取消过滤器。有没有一种方法可以同时工作 任何帮助将不胜感激,在此先感谢

【问题讨论】:

  • 你遇到了什么错误?
  • 超出最大调用堆栈大小
  • 您是否在showInEdit() 函数中传递整个对象?如果是这样,$scope.selectedMember = member;$scope.selectedMember.Code = member; 看起来很矛盾。我认为你应该评论第一行$scope.selectedMember = member;,你能分享你的Contracts数组的数据吗?
  • 感谢您的回复,但是当我评论 $scope.selectedMember = member;一些输入文本数据将为空。实际上它不是一个数组,我从 sql db 中带来数据

标签: javascript angularjs html


【解决方案1】:

如果您不小心两次导入/嵌入同一个 JS 文件,有时可能会出现这种情况,值得在检查器的资源选项卡中检查。或者如果你正在调用一个正在调用另一个函数的函数等等。

【讨论】:

  • 我检查了代码的顶部,没有发现JS文件没有重复,任何想法,谢谢回复
  • 当我在控制器中注释最后 3 行时,所选行值不会显示在输入文本中。或者我必须取消过滤器。有没有一种方法可以同时工作任何帮助将不胜感激,在此先感谢
  • 任何帮助或想法
  • 它是否以 Range Error 的形式出现?你能从控制台复制并粘贴你的错误吗?
  • RangeError: 在 deepCompare (angular.js:21022) 处超出了最大调用堆栈大小,感谢您的回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 2017-07-02
  • 2013-08-23
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多