1

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 retrieve 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 retrieving 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

2 Answers 2

1

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;
    });
Sign up to request clarification or add additional context in comments.

1 Comment

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.
1
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
    });

}]);

2 Comments

You're wrong. "this.title" binds to controller, not to scope. :)
Thank you so much, i tested your answer and it worked :)

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.