Javascript AngularJS不创建新对象

Javascript AngularJS不创建新对象,javascript,angularjs,object,Javascript,Angularjs,Object,我编写了一个简单的angularJS代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.1/angular.min.js"></script> </head> <body ng-app="

我编写了一个简单的angularJS代码:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0-beta.1/angular.min.js"></script>
</head>
<body ng-app="myApp">
  <script>
    angular.module('myApp', []).controller('BooksController', function($scope){
      $scope.books = [{'name':'aaa'}, {'name':'bbb'}, {'name':'ccc'}];
      $scope.addBook = function(newBook){
          $scope.books.push(newBook);
      }
    });
  </script>
  <div ng-controller="BooksController">
      <ul>
          <li ng-repeat="book in books">{{book.name}}</li>
      </ul>
      <input ng-model=aBook.name />
      <a href=# ng-click="addBook(aBook)">add to list</a>
  </div>
</body>
</html>

角度.module('myApp',[]).controller('BooksController',function($scope){
$scope.books=[{'name':'aaa'},{'name':'bbb'},{'name':'ccc'}];
$scope.addBook=函数(newBook){
$scope.books.push(newBook);
}
});
  • {{book.name}

当我向列表中添加新项目时,它会正常工作。 但是,当我想添加另一个新项目时,最后一个项目会覆盖,正如您在url中看到的那样为什么?发生了什么事?

请尝试以下方法:

$scope.addBook = function(newBook){
    $scope.books.push(angular.copy(newBook));
}
为什么??发生了什么事

发生这种情况是因为您的输入绑定到book的名称,当您在数组中添加book时,会添加相同的对象实例,所以绑定仍在发生

在addBook()之前

在addBook()之后

使用angular.copy,我们正在创建另一个具有相同属性值的book对象实例

请尝试以下方法:

$scope.addBook = function(newBook){
    $scope.books.push(angular.copy(newBook));
}
$scope.addBook = function(newBook){
      $scope.books.push($scope.newbook);
      $scope.newbook={"name":""};
      $scope.$apply();
  }
  $scope.newbook={"name":""};
为什么??发生了什么事

发生这种情况是因为您的输入绑定到book的名称,当您在数组中添加book时,会添加相同的对象实例,所以绑定仍在发生

在addBook()之前

在addBook()之后

使用angular.copy,我们正在创建另一个具有相同属性值的book对象实例

请尝试以下方法:

$scope.addBook = function(newBook){
    $scope.books.push(angular.copy(newBook));
}
$scope.addBook = function(newBook){
      $scope.books.push($scope.newbook);
      $scope.newbook={"name":""};
      $scope.$apply();
  }
  $scope.newbook={"name":""};
为什么??发生了什么事

发生这种情况是因为您的输入绑定到book的名称,当您在数组中添加book时,会添加相同的对象实例,所以绑定仍在发生

在addBook()之前

在addBook()之后

使用angular.copy,我们正在创建另一个具有相同属性值的book对象实例

请尝试以下方法:

$scope.addBook = function(newBook){
    $scope.books.push(angular.copy(newBook));
}
$scope.addBook = function(newBook){
      $scope.books.push($scope.newbook);
      $scope.newbook={"name":""};
      $scope.$apply();
  }
  $scope.newbook={"name":""};
为什么??发生了什么事

发生这种情况是因为您的输入绑定到book的名称,当您在数组中添加book时,会添加相同的对象实例,所以绑定仍在发生

在addBook()之前

在addBook()之后

使用angular.copy,我们正在创建另一个具有相同属性值的book对象实例

$scope.addBook = function(newBook){
      $scope.books.push($scope.newbook);
      $scope.newbook={"name":""};
      $scope.$apply();
  }
  $scope.newbook={"name":""};

否则,您将继续插入/修改同一项

否则,您将继续插入/修改同一项

否则,您将继续插入/修改同一项


否则,您将继续插入/修改相同的项目,而不是:ng model=“book.name”而不是:ng model=aBook。name@Manube不,将
aBook
重命名为
book
并不能解决问题,因为您可以在地址处进行测试。它不应该是:ng model=“book.name”而不是:ng model=aBook。name@Manube不将
aBook
重命名为
book
并不能解决问题,因为您可以在地址处进行测试。它不应该是:ng model=“book.name”而不是:ng model=aBook。name@Manube不,将
aBook
重命名为
book
并不能解决问题,因为您可以在该地址进行测试。它不应该是:ng model=“book.name”而不是:ng model=aBook。name@Manube不,将
aBook
重命名为
book
并不能解决问题,因为您可以在地址处进行测试。我删除了我以前的“答案”,因为它更像是一条评论,而不是jsveok建议的任何其他内容。所以我更喜欢在add之后清空scope的对象:
$scope.books.push(newBook)$scope.aBook={}谢谢。我删除了我以前的“答案”,因为它更像是一条评论,而不是jsveok建议的任何东西。所以我更喜欢在add之后清空scope的对象:
$scope.books.push(newBook)$scope.aBook={}谢谢。我删除了我以前的“答案”,因为它更像是一条评论,而不是jsveok建议的任何东西。所以我更喜欢在add之后清空scope的对象:
$scope.books.push(newBook)$scope.aBook={}谢谢。我删除了我以前的“答案”,因为它更像是一条评论,而不是jsveok建议的任何东西。所以我更喜欢在add之后清空scope的对象:
$scope.books.push(newBook)$scope.aBook={}谢谢。好的。所以我更喜欢在add之后清空scope的对象:
$scope.books.push(newBook)$scope.aBook={}谢谢。好的。所以我更喜欢在add之后清空scope的对象:
$scope.books.push(newBook)$scope.aBook={}谢谢。好的。所以我更喜欢在add之后清空scope的对象:
$scope.books.push(newBook)$scope.aBook={}谢谢。好的。所以我更喜欢在add之后清空scope的对象:
$scope.books.push(newBook)$scope.aBook={}谢谢。