2017-04-11 2 views
0

Ich habe eine Ionenschiebe-Komponente mit 3 Folien. Beim ersten Start der App werden alle drei Slides geladen. jedoch auf einem anderen Controller zu gehen und zurück an den Controller kommen, wo die Ionenschlitten ($ state.go verwenden), nur eine Folie zeigt und die folgende Fehlermeldung:

TypeError: Cannot read property '0' of undefined 

diese Fehler zu sehen, verfolgen ich es erste dieser Linie durchläuft:

sharedProperties.setProperty($scope.cardNumbers[$scope.currentIdx] 
.CardNumber); 

anstelle dieser Code die Kartennummer zu holen:

var url = 'http://10.10.9.169/UserService3/WebService1.asmx'; 
    $http.get(url + '/getCardsbyUsername' + '?unameID=' + currentID).success(function(response) { 
    // stuff 
     console.log('response is jsonobj = ' + response); 
     var strObj = JSON.stringify(response).replace(/"(\w+)"\s*:/g, '$1:'); 
     var myObject = eval('(' + strObj + ')'); 
     $scope.cardNumbers = myObject; 
     console.log('response is jsonarr = ' + $scope.cardNumbers); 
    }) 
    .error(function(response) { 
    // error stuff 
     console.log('response error is = ' + response); 
    }); 

hier ist der vollständige Code:

$scope.currentIdx = 0; 

var currentID = sharedProperties3.getUserID(); 
console.log('current ID = ' + currentID); 

var url = 'http://10.10.9.169/UserService3/WebService1.asmx'; 
    $http.get(url + '/getCardsbyUsername' + '?unameID=' + currentID).success(function(response) { 
    // stuff 
     console.log('response is jsonobj = ' + response); 
     var strObj = JSON.stringify(response).replace(/"(\w+)"\s*:/g, '$1:'); 
     var myObject = eval('(' + strObj + ')'); 
     $scope.cardNumbers = myObject; 
     console.log('response is jsonarr = ' + $scope.cardNumbers); 
    }) 
    .error(function(response) { 
    // error stuff 
     console.log('response error is = ' + response); 
    }); 

    $scope.options1 = { 
    initialSlide: 0, 
    onInit: function(slider1) 
    { 
     $scope.slider1 = slider1; 
     sharedProperties.setProperty($scope.cardNumbers[$scope.currentIdx].CardNumber); 

    }, 
    onSlideChangeEnd: function(slider1) 
    { 
     console.log('The active index is ' + slider1.activeIndex); 
     $scope.currentIdx = slider1.activeIndex; 
     console.log('The active card is ' + $scope.cardNumbers[$scope.currentIdx].CardNumber); 
     sharedProperties.setProperty($scope.cardNumbers[$scope.currentIdx].CardNumber); 
    } 
    }; 

    $scope.options2 = { 
    direction: 'vertical', 
    slidesPerView: '1', 
    pagination: false, 
    initialSlide: 1, 
    showNavButtons: false 
    }; 

Wie kann ich es zuerst durch den $ http.get Code Block passieren lassen?

Antwort

0

ich bemerkte, dass ich angularjs mehr als einmal lud, also wurde ich den Extracode, der angularjs in meinem index.html aufruft, los und es funktionierte.