Join the Stack Overflow Community
Stack Overflow is a community of 6.5 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

i'm new to Angular JS and i've been learning from codeschool.

I have this problem i can't figure out how to solve: I want to get data from a php file that i'm working on but first i wanted to make a short example because something just doesn't make sense to me, and is that can never retreive the information that has the php file to the angular controller.

I have uploaded it on a jsfiddle you can check out if you want

Here's the html, it's pretty basic:

<div ng-app="app">
    <div ng-controller="MyController as c">
         <h1>{{c.title}}</h1>
        <p>Controller trial: {{c.content}}</p>
    </div>
</div>

And here the javascript source:

var app = angular.module("app", []);
app.controller("MyController", ['$http', function ($http) {
    this.title = "My Title";
    var filecontent = "Data should be replaced";
    $http.get("http://www.otherwise-studios.com/example.php")
        .success(function (data) {
            filecontent = data;
            //I don't know why data is not loaded here :S
        });
    this.content = filecontent;
}]);

Finally, this is the output i'm getting:

My Title

Controller trial: Data should be replaced

If you visit the link from which i'm retreiving the information you should see this output "You connected to my php file", but as i said before, the data seems to never get updated to the variable:

this.content

Thank you so much for all your help

Juan Camilo Guarin P

share|improve this question
up vote 1 down vote accepted

Data isn't loaded here, because initially "content" is primitive. You have two ways: init "content" as object or write smth like this:

var filecontent = "la la la",
    that = this;

$http.get("http://www.otherwise-studios.com/example.php")
    .success(function (data) {
        that.content = data;
    });
share|improve this answer
    
Actually, i went with this one because i didn't want to touch the scope yet. Maybe in a future i will be using scope. – Juan Camilo Guarin P Jun 20 '14 at 12:57
app.controller("MyController", ['$http', '$scope'  function ($http,$scope) {
this.title = "My Title";
var filecontent = "Data should be replaced";
$http.get("http://www.otherwise-studios.com/example.php")
    .success(function (data) {
        filecontent = data;
        $scope.content = filecontent; // must be within success function to automatically call $apply
    });

}]);
share|improve this answer
    
You're wrong. "this.title" binds to controller, not to scope. :) – Miraage Jun 20 '14 at 7:58
    
Thank you so much, i tested your answer and it worked :) – Juan Camilo Guarin P Jun 20 '14 at 12:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.