javascript - $rootScope returns the value in it but function where i call it is not working (Angular) -


i working with angular, nodejs , mongo (fairly new three) , trying build resource planning tool. basic idea user clicks on main div (grid) , tile (=task) gets created user inputs data. tile draggable , droppable , snaps grid. logic of grid based upon row , columns.

now on have list of users on left of screen in sidebar , need link/assign task right users (so tasks of specific user).

so far able determine position of user in list (y position). , have compare email of $rootscope.users of $scope.taskinfo , if there match have set top value of $scope.taskinfo equal of $rootscope.users offsettop, tasks show on correct row.

here visual of application -> http://gyazo.com/539abe727f0c77be39ac85ee46f4c395, kan see shows tiles random on grid

part of html code:

 <!-- start sidebar -->     <div id="sidebar" class="md-whiteframe-z4">       <img id="logo" src="images/logo.png" alt="" >       <div class="userlist">         <li ng-repeat="user in userinfo" id="userpos" class="circular" style="top: {{ user.top }}">           <p class="initials" id="uservalue">               <custom email="user.email"></custom>               {{user.initials}}           </p>         </li>       </div>     </div>     <!-- end sidebar -->      <!-- start content -->     <div  ce-box-creator id="grid"  style="width: {{gridsizeng.x * 122}}px;" ng-init="creategridlines()" class="containercontent" >       <div class="todayhighlight" style="width: {{gridsizeng.x}}px; left: {{(diffdays - 3)  * diffdays}}px;">        </div>     </div>      <!-- start tile -->     <div  class="tile contenteditorbox" ng-dblclick="showpopup($event); setid( task._id )" ce-drag ce-resize ng-repeat="task in taskinfo"     style="top: {{ task.row * gridsizeng.y+ gridsizeng.miny}}px;     left: {{ task.column * gridsizeng.x + gridsizeng.minx }}px;     width: {{ gridsizeng.x * task.width }}px;"     ng-data-id="{{ task._id }}" ng-init="snapinit()" ng-model="updategriddata" ng-row="{{ task.row }}" ng-column="{{ task.column }}" >         <div class="txtwrappertile">         <div class="containertxt" >           <div class="taskname">              <h4> {{ task.name }} </h4>           </div>           <div class="taskprojectclient">             <p class="ppc"> {{ task.project_client_name}} </p>           </div>           <div class="tasklocation">             <p class="pl">location: {{ task.location }} </p>           </div>           <div class="clear"></div>           <div class="taskestimatetime">            <div class="circle">             <p class="pet"> {{ task.estimate_time }} h</p>            </div>           </div>         </div><!-- end containertxt -->         </div><!-- end txtwrappertile -->     </div><!-- end tile contenteditiorbox -->       <!-- end tile -->     <!-- end content --> 

part of app.js:

//custom directive      $rootscope = {};         $rootscope.users = [];          contenteditor.directive('custom', function($document) {             return {                 restrict: 'e',                 scope: { email: '=' },                 link: function(scope, element, attrs) {                       var mail = scope.email; $rootscope.users.push({                     "mail": mail,                     "positiontop": element[0].offsettop                 });                     console.log("user email is: " + mail);                     console.log("y positon of user circle " + element[0].offsettop);                 }             }         });       //function save details task             $scope.save_task = function() {                  //console.log("save-task-shizzle", this);                 //console.log("sopceingo", $scope.taskinfo);                 var url;                  console.log(editid);                  if(editid){                     url = 'api/task/update/'+ editid;                 }else{                     url = 'api/task/create';                 }                  console.log("url url usa", url, editid, $scope.start_time);                  var defaultstart = new date();                 var defaultstart = defaultstart.getfullyear()+"-"+(defaultstart.getmonth()+1)+"-"+defaultstart.getdate();                         defaultstart += " 00:00:00";                  var defaultend = new date().adddays(2);                 var defaultend = defaultend.getfullyear()+"-"+(defaultend.getmonth()+1)+"-"+defaultend.getdate();                         defaultend += " 00:00:00";                  console.log(defaultstart , defaultend);                  $http.post(url,                     {                         'name'                   : $scope.task_name,                         'project_id'             : $scope.task_project_type,                         'location_id'            : $scope.task_location,                         'estimate_time'          : $scope.task_estimate_time || 2,                         'project_client_name'    : $scope.task_project_client_name,                         'url'                    : $scope.task_url,                         'resource_link'          : $scope.task_resource_link,                         'notes'                  : $scope.task_notes,                         'start_time'             : $scope.start_time || defaultstart,                         'end_time'               : $scope.end_time || defaultend                     },                     {                         headers: {                                 "content-type":"text/plain"                             }                     }                 )                  .success(function (data, status, headers, config) {                     //$scope.userinfo.push(data);                     //$scope.get_task(); //this fetch latest record db                     gettaskfunction(                       /* success function */                       function(data) {                           // $scope.taskinfo.push(data);                           console.log("the tasks have been reloaded");                        },                       /* error function */                       function()                       {                           console.log("server load failed");                       }                     );                   //    console.log("the task has been added db");                     console.log(data);                      $scope.taskinfo.push(data);                  })                 .error(function(data, status, headers, config) {                     console.log("failed add task db");                 });             }  //function retrieve task info var gettaskfunction = function(successfn, errorfn)         {               // original implementation of $scope.get_user success & error used passed in parameter.               $http.get('/api/task/all') // call server                .success(function(data) { // upon success                   successfn(data); // call function passed "getuserfunction" data server                   //console.log("retrieved task data server");                   //console.log("logging data: " , data);                    $scope.updategriddataawesome();                   //console.log("barts test 1 ->", $scope.taskinfo);                   //$scope.linktasktouser(data);               })               .error(errorfn || function() {                   console.log("error in retrieving data server");               }) // process failure           };            this.reloadtasklist = function() {           gettaskfunction(               /* success function */               function(data) {                   //debugger;                   $scope.taskinfo = data;                   $scope.linktasktouser(data);               },               /* error function */               function()               {                 console.log("server load failed");               }             )         };          // load list on startup         this.reloadtasklist();  //retrieving users         $scope.getusers = function() {             $http.get('/api/users').success(function(data)             {                 $scope.userinfo = data;                  //console.log("retrieved users server", data);                 //k$scope.createrowperuser(data);                 //console.log(data);             })             .error(function(data, status, headers, config)             {                 console.log("error in retrieving users server");             });         }         $scope.getusers(); 

and last bit of code loops first through users through tasks , check email , if match set top value of $scope.taskinfo equal of $rootscope.users offsettop.

//creating row per user         $scope.linktasktouser = function() {             console.log("logging root scope ", $rootscope);              (var = 0; < $scope.taskinfo.length; i++) { //doorlopen van alle taken                      console.log('111111');                 (var j = 0; j < $rootscope.users.length; j++) { //doorlopen van alle users                     console.log('fasfsda');                     if ($rootscope.users[j].email == $scope.taskinfo[i].email) {                         console.log('fasfsda1111'); //vergelijken van emails tussen taken en users                         $scope.taskinfo[i].top = $rootscope.users[j].offsettop; //top waarde van de taak gelijkstellen aan de offset van de user                     }                 }             }         }     $scope.createrowperuser(); 

the problems when run application in browser don't see happening (the tiles not assigning correct user in row). not sure if code right ... welcome


Comments