I found the problem, forgot the function parantheses "()" in the end of the controller file
Den torsdag 2 april 2015 kl. 20:51:49 UTC+2 skrev Fredrik Carlsson: > > Hello > > First of all I am a complete beginner at both javascript and angular. > I have made the beginning of an app with everything working inside one > single .js file. > I found the angular styleguide ( > https://github.com/johnpapa/angular-styleguide) and thought i should > adapt this way of working, mainly because I have otherwise no idea of what > I am doing, but also to try to keep some kind of consistency troughout the > app. > And because I have no "own" style of doing things yet this could be a good > start to get a nice structure. > > > I have now made 3 .js files and 1 html page. > One "main module" which is then the "setter" and one factory for getting > data form the backend and one controller. > > When i try to render i get following error: > > Error: [ng:areq] Argument 'TempController' is not a function, got undefined > > http://errors.angularjs.org/1.3.15/ng/areq?p0=TempController&p1=not%20a%20function%2C%20got%20undefined > at REGEX_STRING_REGEXP (angular.js:63) > at assertArg (angular.js:1587) > at assertArgFn (angular.js:1597) > at angular.js:8470 > at angular.js:7638 > at forEach (angular.js:331) > at nodeLinkFn (angular.js:7625) > at compositeLinkFn (angular.js:7117) > at compositeLinkFn (angular.js:7120) > at compositeLinkFn (angular.js:7120)angular.js:11655 (anonymous > function)angular.js:8596 $getangular.js:14567 > $get.Scope.$applyangular.js:1455 bootstrapApplyangular.js:4203 > invokeangular.js:1453 doBootstrapangular.js:1473 bootstrapangular.js:1367 > angularInitangular.js:26304 (anonymous function)jquery.js:3094 > n.Callbacks.jjquery.js:3206 n.Callbacks.k.fireWithjquery.js:3412 > n.extend.readyjquery.js:3428 I > > so something is obviously wrong with the controller and because of the > very few lines of code it would be an easy fix, but I have tried almost > everything now and still I can not get it to work. > Any ideas? Have been sitting with this for a couple of hours now, > googling, stack overflow searching etc etc without success > > *index.html:* > > <!doctype html> > <html ng-app="app" ng-strict-di> > > <head> > <link rel="stylesheet" > href="bower_components/bootstrap/dist/css/bootstrap.min.css"> > > </head> > > <body> > > <div class="panel panel-default" ng-controller="TempController as > tempcontroller"> > <div class="panel-heading">Temperature sensors</div> > > <table class="table table-striped"> > <tr> > <th>#id</th> > <th>payload</th> > <th>timestamp</th> > </tr> > <tr ng-repeat="message in tempcontroller.messages | orderBy:'_id'"> > <td>{{message._id}}</td> > <td>{{message.payload}}°C</td> > <td>{{message.timestamp | date:'HH:mm'}}</td> > </tr> > </table> > > </div> > > > > <script src="bower_components/jquery/dist/jquery.min.js"></script> > <script src="bower_components/angular/angular.js"></script> > <script > src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script> > <script > src="bower_components/angular-websocket/angular-websocket.js"></script> > > <script src="app/app.js"></script> > > <script src="app/app.dataservice.js"></script> > <script src="app/app.tempcontroller.js"></script> > > </body> > > </html> > > > *app.js:* > > (function() { > 'use strict'; > angular > .module('app', []) > > })(); > > > *app.dataservice.js:* > > (function() { > 'use strict'; > angular > .module('app') > .factory('dataservice', dataservice); > > dataservice.$inject = ['$http', '$websocket']; > > function dataservice($http, $websocket) { > var ws = $websocket('ws://192.168.1.111:1880/admin/ws/nodedash/'); > var nodesArray=[]; > > var service = { > getValues: getValues(), > status: status, > send: send > }; > > activate(); > > return service; > > function activate() { > ws.onMessage(function(event) { > > console.log('message: ', event); > var res; > try { > res = JSON.parse(event.data); > } catch (e) { > > console.log=("Could not parse data from Websocket as > JSON"); > > } > > var timestampObj = new Date(res.timestamp.replace(/-/g,"/")); > res.timestamp = timestampObj; > var found = false; > > for (var i = 0; i < nodesArray.length; i++) { //function to > avoid adding same payload to same node again > if (nodesArray[i]._id === res._id) { > > nodesArray[i] = res; > console.log("Updating value for _id: > "+nodesArray[i]._id); > found=true; > > } > } > if (found==false) { > nodesArray.push(res); > console.log("Found new node (_id: " + res._id + "), > please configure node in setup"); > } > > > > > > }); > > ws.onError(function(event) { > console.log('connection Error', event); > }); > > ws.onClose(function(event) { > console.log('connection closed', event); > }); > > ws.onOpen(function() { > > $http.get("http://localhost:1880/api/getnodes/") > .success(function(response) { > for (var i=0;i<response.length;i++){ > nodesArray.push(response[i]); > var timestampObj = new > Date(nodesArray[i].timestamp.replace(/-/g,"/")); > nodesArray[i].timestamp = timestampObj; > } > console.log(nodesArray); > }); > }); > } > > function getValues() { > return nodesArray; > } > function status() { > return ws.readyState; > } > > function send(message) { > if (angular.isString(message)) { > ws.send(message); > } else if (angular.isObject(message)) { > ws.send(JSON.stringify(message)); > } > } > > } > > })(); > > > *app.tempcontroller:* > > (function() { > 'use strict'; > angular > .module('app') > .controller('TempController', TempController); > > TempController.$inject = ['dataservice']; > > function TempController(dataservice) { > var vm = this; > vm.messages = dataservice.getValues(); > > } > > }); > > > -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.
