3

So I already know when I see the answer I'm going to feel really dumb, but I'm working through the AngularJS tutorials at egghead.io. When I do this:

<!DOCTYPE html>
<html>
    <head>
        <title>AngularJS Tutorials</title>
        <link rel="stylesheet" href="/foundation/stylesheets/foundation.min.css">
        <script src="js/main.js"></script>
        <script src="lib/angular/angular.js"></script>
    </body>
    </head>
    <body>
        <div ng-app="myApp">

            <div ng-controller="FirstCtrl">
                <input type="text" ng-model="data.message">
                <h1>{{ data.message }}</h1>
            </div>

            <div ng-controller="SecondCtrl">
                <input type="text" ng-model="data.message">
                <h1>{{ data.message }}</h1>
            </div>
        </div>  
</html>

with my JavaScript file as so (named main.js):

var myApp = angular.module('myApp', []);
myApp.factory('Data', function() {
    return { message: "I'm data from a service"}
})

function FirstCtrl($scope, Data) {
    $scope.data = Data;
}

function SecondCtrl($scope, Data) {
    $scope.data = Data;
}

My {{ data.message }} isn't recognized as an AngularJS binding (i.e. in the page it shows up as
{{ data.message }} instead of "I'm data from a service"). But if I take all the JS code and put it into <script></script> tags directly in the HTML it works fine. Am I missing a reference or something? Haven't seemed to find this anywhere, likely because it's really basic.

1
  • As I said...I feel D-U-M-B. Commented Aug 5, 2013 at 22:59

3 Answers 3

2

I'm going to JUMP THE GUN and recommend you switch these

<script src="js/main.js"></script>
<script src="lib/angular/angular.js"></script>

to

<script src="lib/angular/angular.js"></script>
<script src="js/main.js"></script>

If this works then that is because before you were trying to use angular when it wasn't event loaded.


Tip


Now, when I first started with javascript these sort of things used to happen to me a lot. The best thing for you to do is learn how to use the console it would have told you in the console something along the lines of cannot read property 'module' of undefined that meaning that angular is undefined and therefore not loaded.

Sign up to request clarification or add additional context in comments.

3 Comments

Well, by virtue of speed, I'll accept yours...when it lets me...Yeah, realized I was being an idiot. Thanks for the heads up.
That's a good point. Definitely haven't used the console as much as I should.
The console will solve all of your problems, if you don't understand the errors then copy and give to google, and he will have the answer.
1

Load Angular before your controllers, not after

Comments

1

switch between the lines:

<script src="js/main.js"></script>
<script src="lib/angular/angular.js"></script>

you need to run main.js after angular is loaded

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.