2016-06-20 11 views
0

以下のアプローチに従うと、「プロパティを読み取れません」というエラーが表示されます。角形JSの構文解析がどのように行われているかを知りたい。カスタムJavascriptが実行される前に実行されるか後で実行されるか。未定義のプロパティ 'firstName'を読み取ることができません

//Angular JS code 

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

      myApp.controller('controller', function($scope) 
      { 
        $scope.student = { 
        firstName: "Mark", 
        lastName: "Smith", 

        //returns a string 

        dummyVar: (function() { 
         return "Hello"; 
        }()), 

        fullName: (function() { 
         var studentObject; 
         studentObject = $scope.student; 
         return studentObject.firstName + " " + studentObject.lastName; 
        }()) 
       }; 
      }); 

    //Html Code 

    <!DOCTYPE html> 
    <html> 
    <head> 
     <title></title> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.js"></script> 
    </head> 
    <body ng-app="myApp"> 
     <div ng-controller="controller"> 
      First name is {{ student.firstName }} 
      <br><br> 
      Last name is {{ student.lastName }} 
      <br><br> 
      Dummy Variable is {{ student.dummyVar }} 
      <br><br> 
      Full Name is {{ student.fullname }} 
     </div> 

     <script type="text/javascript" src="function.js"></script> 
    </body> 
    </html>** 
+0

匿名関数fullnameの代わりにプレーンなjavascript関数を記述し、{{student.fullname()}}のように呼び出すとエラーになります。 – BeginnersSake

答えて

0

$スコープオブジェクトの内部機能fullNameあなたを登録すると、オブジェクト自体はまだ作成されていません。したがって、$ scope.studentは存在せず、オブジェクトの作成時には未定義として設定されます。

オブジェクトが作成された後にフィルタまたは関数を使用するか、オブジェクトを返すAPIがフルネームを連結するようにします。

+0

fullNameを書くと:function {){ var studentObject; studentObject = $ scope.student; return studentObject.firstName + "" + studentObject.lastName; }それを{{student.function()}}としてhtmlから呼び出すと、適切な出力が得られます。なぜこれが起こるのか説明できますか? – BeginnersSake

関連する問題