2017-01-15 28 views
0

私は数日前にAngularjsで勉強を始めました。 下のコードを見て、私は2つのフォームを持っています。私が空の入力で私の最初のフォームを送るとき、それはOKです。私の2番目の形式では、同じ方法でそれがOKではない場合、 を送信しますが、私が何かきれいなものを書くなら、それはうまくいきます。これはちょうど最初のクリックで起こった。私のエラーは:AngularJSで空の入力フォームを送信

TypeError: Cannot read property 'name2' of undefined  at ChildScope.$scope.enviar2 

どうすれば解決できますか?

var app = angular.module('app',[]); 
    app.controller('Controller', function($scope){ 

     $scope.send1 = function() { 
      console.log("NAME: " + $scope.name1); 
      console.log("AGE:" + $scope.age1); 
     }; 

     $scope.send2 = function(opcao) { 
      console.log("NAME: " + $scope.option.name2); 
      console.log("AGE: " + $scope.option.age2); 
     }; 
    }); 

フィルタ1

ng-model="name1" 
ng-model="age1" 
ng-submit="send1(); 

フィルタ2

ng-model="option.name1" 
ng-model="option.age1" 
ng-submit="send2(option); 
+0

あなたは私の答えをチェックしましたか? –

答えて

0

一部コード補正がなされる必要があります含むsend2(option)関数として

  • option object次に、$scopeオブジェクトを使用する代わりに、関数内で.演算子を使用してオブジェクトのプロパティに直接アクセスすることができます。
  • オプションオブジェクトにはname2 & age2のプロパティは含まれていませんが、アクセスしようとしていますが、これらのプロパティは存在しないため、undefinedのみが取得されます。デモの作業

var app = angular.module('myApp',[]); 
 

 
app.controller('MyCtrl', function($scope) { 
 
    $scope.send1 = function() { 
 
     console.log("NAME: " + $scope.name1); 
 
     console.log("AGE:" + $scope.age1); 
 
    }; 
 

 
    $scope.send2 = function(opcao) { 
 
     console.log("NAME: " + opcao.name1); 
 
     console.log("AGE: " + opcao.age1); 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <form> 
 
    <input type="text" ng-model="name1"/> 
 
    <input type="text" ng-model="age1"/> 
 
    <button type="submit" ng-click="send1();">Form 1</button> 
 
    </form><br> 
 
    <form> 
 
    <input type="text" ng-model="option.name1"/> 
 
    <input type="text" ng-model="option.age1"/> 
 
    <button type="submit" ng-click="send2(option);">Form 2</button> 
 
    </form> 
 
</div>

関連する問題