2017-09-18 11 views
0

簡単なAngular機能を提供するために、HTMLファイルと単純なJSスクリプトで構成されるAngularJSチュートリアルを行っています。以下はHTMLファイルです。同じフォルダにある即時ファイルの外にAngularJSスクリプトが動作しない

<!DOCTYPE> 
    <html> 
    <script 
    src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
    <script src='main.js'></script> 
    <head> 
     <title> Angular Practice </title> 
    </head> 

    <body ng-app='learningAngular' ng-controller='myCntr'> 

     <input type="text" ng-model='name'> <br> 

     <div ng-bind='name' ng-click='alertMe()'></div> 
     <button ng-click='alertMe()'>Alert Me Angular</button> <br> 
     <div ng-show='willShow'> Show this!! </div> 
     <button ng-click='toggleShow()'> Show </button> 
     <div ng-hide='willShow'> using ng-hide! </div> 

     <ul ng-repeat='puppy in doggos'> 
      <li> {{ puppy }} </li> 
     </ul> 

     <ul ng-repeat='(student, grade) in grades'> 
      <li> {{ student }}, {{ grade }} </li> 
     </ul> 
    </body> 
</html> 

スクリプト、main.jsは、次のようになります。

var app = angular.module('learningAngular', []); 
    app.controller('myCntr', ['$scope', function($scope) { 
     $scope.name = 'Josephine'; 
     $scope.alertMe = function() { 
      alert("Congrats!"); 
     }; 
     $scope.willShow = true; 
     $scope.toggleShow = function() { 
      $scope.willShow = !$scope.willShow; 
     }; 
     $scope.doggos = ['rex', 'fido', 'rover']; 
     $scope.grades = { 
      Max: 'A', 
      Joan: 'B', 
      Jay: 'C' 
     }; 
    }]); 

私は非常に混乱していますので、私は(スクリプトファイルの角度モジュール/コントローラを持っている場合main.js)を同じフォルダに配置すると、Angularは機能しなくなりました。スクリプトをindex.htmlに移動すると、完全に正常に動作します。私はsrc = 'main.js'を使いこなしてみると、それが問題であるかどうかを調べることができ、何か問題が見つからなかった。

+0

スクリプトタグをbody要素の最後に移動してみてください。 –

+0

@JCFordありがとう!それはうまくいくようです。それがどうして重要か知っていますか? –

答えて

1

<script>タグは、<head>または<body>タグ内にある必要があります。それはそれを拾っていない理由かもしれません。この動作するはずのような

何か:

<!DOCTYPE> 
<html> 
    <head> 
     <title> Angular Practice </title> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
     <script src="main.js"></script> 
    </head> 

    <body ng-app='learningAngular' ng-controller='myCntr'> 
    ... 
    </body> 
</html> 

は古い慣習は<body>タグの末尾にスクリプトを置くことだったが、我々は、ビューをレンダリングするための責任があるJavaScriptフレームワークで作業していることから、その慣例はもはや意味をなさない。

関連する問題