-1

私はAngularの初心者で、本のリスト(プロパティa、b、c、d)と新しい本を追加できるサイトを作成しようとしています。1回目はeverythikを送信するとうまくいき、2回目はこのエラーが発生します v2.newBook is not a function. 1回目と2回目が機能しない理由を誰かが知っていますか? どうも

`https://plnkr.co/edit/OtfLPuQFptfgUxuo0pXJ`
4

4 に答える 4

2

これは、呼び出す関数と book モデル自体に同じ名前を使用しているためです。開始後は のみが$scope.newBook function存在しますが、後でそれを本のモデルで上書きします。関数またはモデルの名前を変更するだけです。

于 2016-05-15T18:02:52.800 に答える
1

コード関数で関数をオブジェクト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: ''
    }
  }
于 2016-05-15T18:04:03.257 に答える
0

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>

于 2016-05-15T18:03:55.490 に答える
0

コードで小さな間違いを犯しました。実際には、d オブジェクトを 2 回リセットし、a をリセットしたままにしました。function resetForm() { $scope.newBook = { d: '', b: '', c: '', d: '' } }

d:'' を a:'' に変更するだけで実行されます。

ありがとう

于 2016-05-15T18:15:30.387 に答える