为什么浏览器会在AngularJS控制器方法中冻结?

时间:2016-01-26 00:35:43

标签: javascript angularjs

我打开了FireFox开发人员工具,调试器在处理表单输入的函数中的每一行都有断点。调试器指示方法的执行只是在一个特定的行中断而没有任何解释。代码正在运行,需要在每个步骤进行确认,然后突然该方法在特定行停止执行,使用户的视图处于静态状态。没有任何能力在调试器中单击“继续”或查看任何参数值,因为代码只是停止运行并退出,使用户挂起而没有响应。

我需要对下面的代码进行哪些具体更改才能使方法继续运行?如何确定问题所在以便了解代码需要处理的条件?在任意点暂停程序执行的幻象是令人不安的。如果这是Java,那么ide会告诉我问题是什么。

首先,这行代码导致了问题:

$scope.resultmessage.webleadid = $scope.wleadid;

但后来我创建了一个if测试来阻止该行被读取,结果是下一行引起了同样的问题:

$scope.resultmessage.name = $scope.uname;

以下是AngularJS控制器中的方法:

$scope.pinForm = function(isValid) {
    console.log("inside pinForm")
    if (isValid) {
        console.log("pinForm is Valid!")
        if($scope.existing !='yes'){$scope.resultmessage.webleadid = $scope.wleadid;}
        $scope.resultmessage.name = $scope.uname;
        $scope.resultmessage.existing = $scope.existing;
        var funcJSON = $scope.resultmessage;
        auth.authenticate2(funcJSON, function(authenticated2) {
            if (authenticated2=='yes') {
                $scope.processStep="done";
                console.log(auth.authenticated2);
                $location.path('/secure');
                $scope.$apply();
            }
        });

    }
};

以下是视图的代码:

    <form name="pincodeForm" ng-submit="pinForm(pincodeForm.$valid)" novalidate>
        One time pin code: 
        <input type="text" name="content" ng-model="resultmessage.content" required data-countparens="" />
        <p ng-show="pincodeForm.content.$error.required && !pincodeForm.content.$pristine" class="help-block">Pin code is a required field.</p>     
        <button type="submit" ng-disabled="pincodeForm.$invalid" >Submit</button>
    </form>

控制器代码顶部的变量声明包括以下内容,尽管某些变量的值已通过运行代码而更改:

$scope.credentials = {};
$scope.weblead = {type:"weblead", firstname: 'cuff', lastname: 'link', organization: "shirt", emailaddress: 'cuff@shirt.com'};
$scope.leadresult = "blank";
$scope.processStep = "start";
$scope.uname = "blank";
$scope.wleadid = "initial blank value";
$scope.existing = "blank";

0 个答案:

没有答案