Javascript ng重复不使用数组

Javascript ng重复不使用数组,javascript,angularjs,Javascript,Angularjs,我不熟悉AngularJs和Javascript,所以我将尽我所能解释这个问题。我的角度控制器从MVC控制器中的方法接收数据。每次运行脚本时,MVC控制器返回1项。每次在无序列表中使用ng repeat返回新项目时,我都会尝试动态扩展html页面中的项目列表。当我使用ng repeat时,第一个项目直到添加第二个项目后才显示,然后它们一起显示。如果我添加第三个项目,这些项目会显示得很奇怪。以下是使用ng repeat的迭代示例: 迭代1: 空白 迭代2: 项目1 项目2 迭代3: [“第1项”、

我不熟悉AngularJs和Javascript,所以我将尽我所能解释这个问题。我的角度控制器从MVC控制器中的方法接收数据。每次运行脚本时,MVC控制器返回1项。每次在无序列表中使用ng repeat返回新项目时,我都会尝试动态扩展html页面中的项目列表。当我使用ng repeat时,第一个项目直到添加第二个项目后才显示,然后它们一起显示。如果我添加第三个项目,这些项目会显示得很奇怪。以下是使用ng repeat的迭代示例:

迭代1:

空白

迭代2:

项目1

项目2

迭代3:

[“第1项”、“第2项”]

项目3

第三次迭代显示为括号和引号,而不是无序列表的项目符号。有人能告诉我发生了什么事吗

以下是角度控制器代码:

     $scope.addState = function () {
        //debugger;
        companyService.addState($scope.form)
        .success(function (data) {
            if (pass == 0) {
                $scope.addedStates = data;
                pass = pass + 1;
            }
            else {

                addedStates = [
                    angular.copy($scope.addedStates),
                    data

                ];
                $scope.addedStates = addedStates;

            }
            $scope.rmgStates = $scope.rmgStates - 1;

            if($scope.rmgStates == 0)
            {
                $scope.canSubmit = true;
                $scope.lastState = false;
            }
            else {
                $scope.canSubmit = false;
                $scope.lastState = true;
            }
        })
    };
以下是html代码:

                        You have added the following States:<br />
                    <ul>
                        <li ng-repeat="item in addedStates">
                            {{item}}
                        </li>
                    </ul>
您已添加以下状态:
  • {{item}}

非常感谢您提供的所有帮助。

问题是,在第一步中,您将addedStates设置为添加的单个状态——因为ng repeat需要和数组,所以它没有显示任何内容。在第一次之后的过程中,您将获取以前的加法状态,用数组包装它,然后将其与新状态一起插入数组中,因此每次都会更深一层--这就是为什么第二次显示正确的格式,但第三次显示的是数组中的数组

相反,您应该初始化并清空数组,在每次成功请求添加状态时,只需将新状态推送到现有数组中

试试这个:

$scope.addedStates = [];

$scope.addState = function () {
        //debugger;
        companyService.addState($scope.form)
        .success(function (data) {
            $scope.addedStates.push(angular.copy(data));
            $scope.rmgStates = $scope.rmgStates - 1;

            if($scope.rmgStates == 0)
            {
                $scope.canSubmit = true;
                $scope.lastState = false;
            }
            else {
                $scope.canSubmit = false;
                $scope.lastState = true;
            }
        })
    };

在数组中添加新项的方法如下。使用:

$scope.addedStates.push(data);
而不是:

if (pass == 0) {
    $scope.addedStates = data;
    pass = pass + 1;
}
else {

    addedStates = [
        angular.copy($scope.addedStates),
        data
    ];
    $scope.addedStates = addedStates;
}

令人惊叹的!就像我需要的那样!