2012-11-03 40 views
6

Sto appena iniziando a pasticciare con angular js e sto provando a caricare i dati attraverso un'azione post.Angularjs TypeError: undefined non è una funzione

sto usando angularjs v.1.0.2

Ecco il mio codice: HTML:

<!DOCTYPE html> 
<html ng-app> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
     <title></title> 
     <meta name="description" content=""> 
     <meta name="viewport" content="width=device-width"> 

     <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script> 
     <script src="<?php echo $baseUrl?>/js/profilling/main.js"></script> 
    </head> 
    <body> 
     <div ng-controller="GroupsCtrl"> 

     </div> 
    </body> 
</html> 

main.js:

function GroupsCtrl($scope, $http) { 
    $scope.url = '/file.php'; 
    $scope.images = []; 

    function handleGroupsLoaded(data, status) { 
     console.log(data); 
    } 

    $scope.fetch = function() { 
     $http.post($scope.url).success($scope.handleGroupsLoaded); 
    } 

    $scope.fetch(); 
} 

Sto cercando di seguire questo jsfiddle: http://jsfiddle.net/simpulton/wHL3F/

Ma sto ricevendo il seguente errore:

TypeError: undefined is not a function at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:92:92 at i (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:76:119) at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:76:352 at Object.e.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:86:220) at Object.e.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:84:198) at Object.e.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:86:379) at e (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:92:330) at o (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:95:407) at XMLHttpRequest.q.onreadystatechange (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:96:334)

Qualcuno può aiutare?

Grazie

EDIT file.php:

echo '{"menu": { 
    "id": "file", 
    "value": "File", 
    "popup": { 
    "menuitem": [ 
     {"value": "New", "onclick": "CreateNewDoc()"}, 
     {"value": "Open", "onclick": "OpenDoc()"}, 
     {"value": "Close", "onclick": "CloseDoc()"} 
    ] 
    } 
}} 
'; 

Sembra un oggetto JSON valido.

+1

Forse hai solo bisogno di dichiarare 'funzione handleGroupsLoaded (dati, stato)' come '$ scope.handleGroupsLoaded = function (dati, stato) {. ..} ' – Justen

+0

e ora mi sento stupido :) grazie !! ha funzionato come un fascino! – jribeiro

risposta

6

Hai solo bisogno di registrare il handleGroupsLoaded() nel $scope

function GroupsCtrl($scope, $http) { 
    $scope.url = '/file.php'; 
    $scope.images = []; 

    $scope.handleGroupsLoaded = function(data, status) { 
     console.log(data); 
    } 

    $scope.fetch = function() { 
     $http.post($scope.url).success($scope.handleGroupsLoaded); 
    } 

    $scope.fetch(); 
} 
Problemi correlati