我是 Angular 的新手,我正在尝试使用书籍列表(具有属性 a、b、c、d)以及您可以添加新书的位置创建网站。我第一次提交everythik 时很好,第二次我收到这个错误v2.newBook 不是一个函数。有谁知道为什么它第一次和第二次不工作?谢谢
`https://plnkr.co/edit/OtfLPuQFptfgUxuo0pXJ`
我是 Angular 的新手,我正在尝试使用书籍列表(具有属性 a、b、c、d)以及您可以添加新书的位置创建网站。我第一次提交everythik 时很好,第二次我收到这个错误v2.newBook 不是一个函数。有谁知道为什么它第一次和第二次不工作?谢谢
`https://plnkr.co/edit/OtfLPuQFptfgUxuo0pXJ`
这是因为您为调用的函数和图书模型本身使用了相同的名称。启动后,只有$scope.newBook
function
存在,但后来你用你的书模型覆盖它。只需简单地重命名函数或模型。
在您的代码函数中将函数resetForm()
转换$scope.newBook
为对象
$scope.newBook = function(book) {
book.id = $scope.books.length;
$scope.books.push(book);
resetForm();
}
function resetForm() {
$scope.newBook = { //here you defined newBook again as object
d: '',
b: '',
c: '',
d: ''
}
}
https://plnkr.co/edit/3wwbDfTjcVQKx0VmsDFn?p=preview
这是一个有效的plnkr。您的函数和对象都是导致问题的 newBook。
$scope.newBook1 = function(book) {
book.id = $scope.books.length;
$scope.books.push(book);
resetForm();
}
HTML:
<form class="form-group" ng-show="newBookForm" ng-submit="newBook1(newBook)" novalidate>
您在代码中犯了一个小错误,实际上您已经重置了 d 对象两次并离开了重置 a。函数resetForm() { $scope.newBook = { d: '', b: '', c: '', d: '' } }
只需将 d:'' 更改为 a:'' 即可运行。
谢谢