为什么AngularJS$作用域不能正常工作

Why AngularJS $scope is not working correctly?

本文关键字:工作 常工作 AngularJS 作用域 不能 为什么      更新时间:2023-09-26

我是AngularJS的新手,我想创建一个数组并通过register函数将其发布到服务器,这里是控制器代码:

root.controller('mainController', function($scope) {
    $scope.lineItems = [];
    $scope.addItem = function (id) {
        $scope.lineItems.push(id);
        console.log($scope.lineItems);
        // gives me right data -> Array [ "1", "2", "3", "4", "1" ]
    };
    $scope.register = function () {
        // post data to server
        console.log($scope.lineItems);
        // gives me an empty array -> Array [ ]
    };
});

以下是HTML代码和指令:

<div class="container" ng-controller="mainController">
    <a ng-click="register()"></a>
    <div ng-repeat="product in products">
        <a class="btn" ng-click="addItem(product.id)">Add</a>
    </div>
</div>

当我想调用register函数时,就会出现这个问题,它给了我一个空数组,而不是数组元素,而这在addItem函数中不会发生。

这是您的代码,可以正常工作。

var app = angular.module("testApp", []);
app.controller('testCtrl', function($scope){
  
    $scope.products = [{id:1},{id:2},{id:3},{id:4}];
  
  $scope.lineItems = [];
    $scope.addItem = function (id) {
        $scope.lineItems.push(id);
        console.log($scope.lineItems);
        // gives me right data
    };
    $scope.register = function () {
        // post data to server
        console.log($scope.lineItems);
        // gives me an empty array
    };
  
 
});
<div ng-app="testApp" ng-controller="testCtrl">
   <a ng-click="register()">Register</a>
<div ng-repeat="product in products">
    <a class="btn" ng-click="addItem(product.id)">Add : {{product.id}}</a>
</div>
   
</div>