2016-08-11 3 views
0

私はこれを私のHTMLビューで持っています。未定義の赤いプロパティはありません

<form name="adduser" id="signupForm" novalidate> 
    <span>First Name</span> 
    <label class="item item-input" id="profileLabel"> 
    <input id="profileInput" type="text" 
        ng-model="user.fname" 
        class="form-control"        
        placeholder="{{fnamePlaceholder}}" 
        ng-minlength="1" > 
    </label> 

    <div id="name-group" class="form-group-lg"> 
     <button type="submit" ng-click="updateData(user)" id="initiateSignUp" class=" button button-positive button-block" > 
     Save and continue 
     </button> 
    </div> 
</form> 

と、これは私のコントローラ

$scope.updateData=function(user){ 
    console.log (user.fname) 
} 

のスタートですが、私はあなたがでundefined

あるオブジェクトのプロパティを設定している

TypeError: Cannot read property 'fname' of undefined

+0

あなたの '$ scope'とは何ですか? $ scopeがユーザの場合、ng-model = "fname"だけではありません。問題はユーザーが未定義であることです。 –

答えて

0

を得続けますユーザーを初期化する必要があります。

$scope.user = {}; 
1

まず、コントローラに$scope.user = {};を定義します。

ngClickコールバックには、userをパラメータとして渡す必要はありません。 user変数はスコープ上で定義されているため、パラメータとして渡す理由はありません。

コールバックで$scope.userを単に使用してください。

0

Angularはコントローラ上に自動的にプリミティブ値を作成できますが、オブジェクトや配列のような複雑な型を作成することはできません。バインディングで使用する前に、コントローラーでこれらを初期化する必要があります。

0

ユーザーをオブジェクトとして事前定義してみてください。

$scope.user = {}; 

$scope.updateData = function(user) { 
    console.log (user.fname); 
}; 

ユーザーはオブジェクトであり、使用する前に定義されていないため、コンパイラはユーザーのプロパティを作成できませんでした。

関連する問題