2016-05-24 4 views
0

Ich bin neu in AngularJS und ich versuche, nur meine Gruppennamen in einem Array von meiner JSON-Antwort zu speichern.Fehler: [ng: Areq] Argument 'UserDataController' ist keine Funktion, undefined

Ich erhalte die folgenden Fehler

angular.js:9997 Error: [ng:areq] Argument 'UserDataController' is not a function, got undefined 
http://errors.angularjs.org/1.2.20/ng/areq?p0=UserDataController&p1=not%20aNaNunction%2C%20got%20undefined 
    at https://code.angularjs.org/1.2.20/angular.js:78:12 
    at assertArg (https://code.angularjs.org/1.2.20/angular.js:1481:11) 
    at assertArgFn (https://code.angularjs.org/1.2.20/angular.js:1491:3) 
    at https://code.angularjs.org/1.2.20/angular.js:7213:9 
    at link (https://code.angularjs.org/1.2.20/angular-route.js:913:26) 
    at nodeLinkFn (https://code.angularjs.org/1.2.20/angular.js:6648:13) 
    at compositeLinkFn (https://code.angularjs.org/1.2.20/angular.js:6039:13) 
    at publicLinkFn (https://code.angularjs.org/1.2.20/angular.js:5934:30) 
    at boundTranscludeFn (https://code.angularjs.org/1.2.20/angular.js:6059:21) 
    at controllersBoundTransclude (https://code.angularjs.org/1.2.20/angular.js:6669:18) 

Das ist mein Index-Seite, wo ich gegeben habe, alle CSS, Bootstrap-Datei und die Lage.

meine index.html

<!DOCTYPE html> 
    <html ng-app="app"> 

<head> 
    <meta charset="utf-8"/> 
    <title>Groupz</title> 
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" /> 
    <link href="https://cdn.rawgit.com/cornflourblue/angular-registration-login-example/master/app-content/app.css" rel="stylesheet" /> 

<link rel="stylesheet" type="text/css" href="css/login.css"> 

<link rel="stylesheet" type="text/css" href="css/register.css"> 
</head> 

<body> 

<div class="main-wrapper" >  
     <div ng-class="{ 'alert': flash, 'alert-success': flash.type === 'success', 'alert-danger': flash.type === 'error' }" ng-if="flash" ng-bind="flash.message"></div> 
     <div ng-view></div> 
     </div> 


    <div class="credits text-center"> 

    </div> 

    <script src="https://code.jquery.com/jquery-2.0.3.min.js"></script> 
    <script src="https://code.angularjs.org/1.2.20/angular.js"></script> 
    <script src="https://code.angularjs.org/1.2.20/angular-route.js"></script> 
    <script src="https://code.angularjs.org/1.2.13/angular-cookies.js"></script> 


    <script src="app.js"></script> 
    <script src="app-services/authentication.service.js"></script> 

    <!-- real time API storage--> 
    <script src = "app-services/user.service.js"></script> 
    <script src="app-services/flash.service.js"></script> 


    <!-- Fake user service for demo that uses local storage --> 
    <script src="app-services/user.service.js"></script> 
<!-- storage dependency--> 
    <script src="js/ngStorage.min.js"></script> 
    <script src="controller/userdata.controller.js"></script> 
    <script src="controller/login.controller.js"></script> 
    <script src="controller/register.controller.js"></script> 
    <script src="controller/resetpassword.controller.js"></script> 


</body> 

</html> 

Sobald logined Ich erhalte die Json Antwort als unter

{ 
    "json": { 
    "response": { 
     "statuscode": "0", 
     "statusmessage": "Success", 
     "user": [ 
     { 
      "groupname": "School BSK", 
      "membername": "Preethi Ritesh", 
      "session_id": "573eaea74a96c3442a2e45a0" 
     }, 
     { 
      "groupname": " Office", 
      "membername": "Preethi Ritesh", 
      "session_id": "573eaea74a96c3442a2e45a2" 
     }, 
     { 
      "groupname": "Team Developers", 
      "membername": "Preethi Ritesh", 
      "session_id": "573eaea74a96c3442a2e45a4" 
     }, 
     { 
      "groupname": "Pavan School", 
      "membername": "Preethi", 
      "session_id": "573eaea74a96c3442a2e45a6" 
     }, 
     { 
      "groupname": "Shubiksha Apartments", 
      "membername": "Preethi", 
      "session_id": "573eaea74a96c3442a2e45a8" 
     }, 
     { 
      "groupname": "Shubiksha Apartments", 
      "membername": "Rohan Ritesh", 
      "session_id": "573eaea74a96c3442a2e45aa" 
     }, 
     { 
      "groupname": "Little Millenium - Girinagar", 
      "membername": "Preethi", 
      "session_id": "573eaea74a96c3442a2e45ac" 
     }, 
     { 
      "groupname": "Group App Testing", 
      "membername": "Preethi Ritesh", 
      "session_id": "573eaea74a96c3442a2e45ae" 
     }, 
     { 
      "groupname": "Group App Testing", 
      "membername": "Ritesh Kumar", 
      "session_id": "573eaea74a96c3442a2e45b0" 
     }, 
     { 
      "groupname": "Team Analysts", 
      "membername": "Preethi Ritesh", 
      "session_id": "573eaea74a96c3442a2e45b2" 
     }, 
     { 
      "groupname": "Office", 
      "membername": "Preethi", 
      "session_id": "573eaea74a96c3442a2e45b4" 
     }, 
     { 
      "groupname": "Office", 
      "membername": "Rohan Ritesh", 
      "session_id": "573eaea74a96c3442a2e45b6" 
     }, 
     { 
      "groupname": "Office", 
      "membername": "PreethiEngineer", 
      "session_id": "573eaea74a96c3442a2e45b8" 
     }, 
     { 
      "groupname": "Test SR", 
      "membername": "SR Tester", 
      "session_id": "573eaea74a96c3442a2e45ba" 
     }, 
     { 
      "groupname": "Planet Kids Banashankari", 
      "membername": "Preethi Ritesh", 
      "session_id": "573eaea74a96c3442a2e45bc" 
     } 
     ] 
    } 
    } 
} 

Aus der obigen Antwort ich nur den Gruppennamen, MEMBER speichern müssen und Sitzungs seperat im Cookie-Speicher.

Dann muss ich den Gruppennamen auf der Profilseite auflisten.

Dies ist mein Controller nach dem Login verwendet und ich versuche, alle Gruppennamen in ein Array, die als eine Liste in meiner Ansicht oder Profilseite angezeigt werden soll.

mein userdata.controller.js

(function() { 
    'use strict'; 

    var myApp = angular.module('myApp', ['ngStorage']); 

myApp.controller('UserDataController', function($scope,$localStorage,$http,$q) { 
     $scope.model = { 
    'displayHome' : false, 
    'dropDownData':[] 
     }; 


     $scope.cookietechnology = $localStorage.x; //getting data from cookies 

     if($scope.cookietechnology){ 

     $scope.model.dropDownData = $scope.cookietechnology; 
     $scope.model.selectedValue = $scope.cookietechnology; 
     $scope.model.displayHome = true; 

    } 



    $scope.getData = function(requestedUrl,requestHeader, requestData,requestMethod) { 
    $scope.model.dropDownData = []; 
       var deferred = $q.defer(); 
       var req = { 
        method: requestMethod, 
        url: requestedUrl, 
        headers:{"Content-Type": "application/x-www-form-urlencoded"}, 
        data: requestData 
       }; 

     var user = response.json.response.user; 


      $http(req) 
        .success(function(response) { 
       for(var i=0; i<user.length-1; i++) 
     { 
           console.log("datas : "+response.json.response.user[i].groupzdetails.groupname); 


      $scope.model.dropDownData.push(response.json.response.user[i].groupzdetails.groupname); // we can itterate and set the drop down values 
      $scope.model.selectedValue = response.json.response.user[i].groupzdetails.groupname; // set model value 
     } 
      $localStorage.x = $scope.model.dropDownData; //setting data in cookies 

      $scope.model.displayHome = true; // variable to show and hide home and login 

         deferred.resolve(response); 
        }) 
        .error(function(error) { 
         deferred.reject(error); 
        }); 

       return deferred.promise; 

      };  


}); 
})(); 

Ich versuche, alle meine Gruppenname in Auswahlbox mit aufzulisten und zu versuchen, MEMBER als willkommen Namen anzuzeigen.

mein home.view.html

<html ng-app="myApp"> 
    <style> 
     /* Remove the navbar's default margin-bottom and rounded borders */ 

     .navbar { 
      margin-bottom: 0; 
      border-radius: 0; 
      border-color: white; 
      height: 6em; 
      padding-top: 12px; 
      background-color: #2eb2f2; 
     } 
     /* Set height of the grid so .sidenav can be 100% (adjust as needed) */ 

     .row.content { 
      height: 1000px 
     } 
     /* Set gray background color and 100% height */ 

     .sidenav { 
      padding-top: 20px; 
      background-color: #f1f1f1; 
      height: 100%; 
     } 
     /* Set black background color, white text and some padding */ 

     footer { 
      background-color: #555; 
      color: white; 
      padding: 15px; 
     } 
     /* On small screens, set height to 'auto' for sidenav and grid */ 

     @media screen and (max-width: 767px) { 
      .sidenav { 
       height: auto; 
       padding: 15px; 
      } 
      .row.content { 
       height: auto; 
      } 
     } 

     canvas { 
      padding: 0 30px 0 0; 
     } 
    </style> 

<body> 
<nav class="navbar navbar-inverse"> 
    <div class="container-fluid"> 
    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span>       
     </button> 
     <img class="img-responsive" src="css/images/Groupz.png" /> 
    </div> 
    <div class="collapse navbar-collapse" id="myNavbar"> 

     <div class="nav navbar-nav navbar-right" style="padding-top:6px;"> 
     <div class="dropdown"> 
     <span class="badge">5</span><img style="padding-right:10px;" src="css/images/bell1.png" /> 
     <img class="img-circle dropdown-toggle" data-toggle="dropdown" width="40" height="40" src="css/images/image.jpg" /><span class="caret dropdown-toggle" data-toggle="dropdown"></span> 

     <ul class="dropdown-menu"> 
     <li><a href="#/login">Logout</a></li> 
     </ul> 
     </div> 
    </div> 
    </div> 
    </div> 
</nav> 

<div class="container-fluid text-center" ng-controller="UserDataController as ctrl"> 
    <div class="row content" style="margin-top:100px; color:rgba(51, 122, 183, 1);" ng-if="!model.displayHome"> 
     <button ng-click="getData('json_resp.json','','','GET')">Click to login</button> 
    </div> 
     <div class="row content" ng-if="model.displayHome"> 
      <div class="col-sm-2 sidenav"> 
     <div class="well well-lg col-xs-30" style="background-color: green;" ng-show="true"> 

     <img class="img-responsive" style="padding-bottom:10px;" src="css/images/image.jpg" /> 
     <div class="form-group"> 
      <select class="form-control" ng-model="model.selectedValue" name="groupname"> 
       <option value='' disabled> Switch Account </option> 
        <option ng-repeat="item in model.dropDownData track by $index" value="{{item}}">{{item}}</option> 
        </select> 
        </div> 
       </div> 
     <div class="collapse navbar-collapse navbar-ex1-collapse"> 
    <ul class="nav navbar-nav"> 
     <li><a href="#/dashboard"><span class="glyphicon glyphicon-dashboard vmenu"></span> Dashboard</a> 
     </li> 
     <li class="#/Profile"><a href="#/"><span class="glyphicon glyphicon-user vmenu"></span>Profile</a> 
     </li> 
     <li><a href="#/Account"><span class="glyphicon glyphicon-edit vmenu"></span>Account</a> 
     </li> 
     <li><a href="#/Dropbox"><span class="glyphicon glyphicon-tags vmenu"></span>Dropbox</a> 
     </li> 
     <li><a href="#/Checklist"><span class="glyphicon glyphicon-off vmenu"></span>Checklist</a> 
     </li> 
     <li><a href="#/Report"><span class="glyphicon glyphicon-off vmenu"></span>Report</a> 
     </li> 
     <li><a href="#/Settings"><span class="glyphicon glyphicon-off vmenu"></span>Settings</a> 
     </li> 
     <li><a href="#/Help"><span class="glyphicon glyphicon-off vmenu"></span>Help</a> 
     </li> 
    </ul> 

    </div> 
    </div> 

    <div class="col-sm-8 text-left"> 
     <h1>Welcome</h1> 
     <h6 class="page-header ng-binding" ng-model="membername">{{membername}}</h6> 

</div> 
</div> 
    </div> 
<footer class="container-fluid text-center"> 
    <p>Groupz</p> 
</footer> 

</body> 
</html> 
+0

Vielen Dank, ich habe es –

+0

OP, würden Sie Ihre Lösung als zusätzliche Antwort unten bitte hinzufügen? – halfer

Antwort

0

Working Demo

sollten Sie ngStorage.js enthalten.

<script src="https://cdnjs.cloudflare.com/ajax/libs/ngStorage/0.3.10/ngStorage.js"></script> 

Hoffe, dass Ihr Problem zu lösen.

+0

Jetzt bekomme ich unter Fehler "angular.js: 9997 Fehler: [$ injector: unpr] Unbekannter Provider: $ localStorageProvider <- $ localStorage" Ich entfernte [ngStorage] -Deklaration, weil ich Skript dafür verwendet habe. Können Sie mir bitte sagen, warum ich diesen Fehler bekomme? –

+0

Was meinen Sie mit "unter dem Fehler"? Bitte laufen Sie mein Plnke, beachten Sie, dass es keinen Fehler gibt. –

+0

Ich entfernte die [ngStorage] von "var myApp = angular.module ('myApp', ['ngStorage']);" weil ich das obige Skript verwende. Aber jetzt bekomme ich Fehler als "angular.js: 9997 Fehler: [$ injector: unpr] Unbekannter Provider: $ localStorageProvider <- $ localStorage" Habe ich einen Fehler gemacht. –

Verwandte Themen