2016-07-14 9 views
0

Hier ist mein Controller:Ionic/AngularJS Änderung Controller zu einem globalen Variable

(function() { 

    var app= angular.module('app'); 
    app.controller('recommendedJobsCtrl', ['$scope', function(dataShare,$q,$scope, $ionicSideMenuDelegate,$window,$http,$timeout) { 

    // passes contents to jobDetails to be rendered and displayed 
     window.post = function($event, res){ 
     console.log(angular.element($event.target).parent()); 
     dataShare.sendData(res) 
     } 
    /** 
    * handles pagination 
    *loads first 3 pages 
    **/ 
    var i=1; 
    window.result=[]; 
    window.noMoreItemsAvailable=false; 
    window.loadMore = function() 
    { 
     console.log('here') 
     if(i<4) 
     { 
     $http.get("http://test.website.com/api/search/"+i).success(function(response) 
     { 
      i++; 
      $scope.result=$scope.result.push(response); 
      console.log(response); 

      $timeout(function() 
      { 
      $scope.result = response 
      }); 

      $scope.$broadcast('scroll.infiniteScrollComplete'); 
     }); 
     }else 
     { 
     $scope.noMoreItemsAvailable=true; 
     } 
    } 

    ]); 

}()); 

ich gelesen, dass mein Controller unter ‚Benutzer streng‘ war, so dass es nicht die Variablen oder Funktionen zugreifen können. Also habe ich das Wort "window" platziert, um es global zu machen. Aber jetzt greift es nicht auf die Funktion zu, weil die Konsole nicht drucken wird. Wie behebe ich das?

Antwort

0

Dependency Injection ist falsch:

app.controller('recommendedJobsCtrl', [ 
    'dataShare', 
    '$q', 
    '$scope', 
    '$ionicSideMenuDelegate', 
    '$window', 
    '$http', 
    '$timeout', 
    function(
    dataShare, 
    $q, 
    $scope, 
    $ionicSideMenuDelegate, 
    $window, 
    $http, 
    $timeout) { 


    // Your code ... 

}]); 

Der Code sollte an den Controller spezifisch sein. Sie sollten Funktion und Variablen entweder unter $scope wie in $scope.<functionName> = function() {} und $scope.noMoreItemsAvailable oder privat für die Steuerung wie in function <functionName>() {} oder var noMoreItemsAvailable erstellen.

Falls die Absicht hinter der Verwendung des Objekts window darin besteht, den gleichen Code für alle Controller zu verwenden, können Sie diesen Code in eine factory eingeben.

+0

danke! es funktionierte – noor

Verwandte Themen