2017-02-19 2 views
0

Ich versuche, Textelemente auf einer Seite basierend auf numerischen Werten, die ich von meinem Server zurück gebe, zu ändern. Ich schaffe es, jede Referenz sowie den Wert vom Server zu speichern, aber beim Versuch, auf den Textwert des Objekts zuzugreifen, bekomme ich den Fehler statusText[key].text is not a function. Ist es möglich, beim Referenzieren aus einer Liste auf die Objekteigenschaften zuzugreifen? Javascript und Angular sind nicht meine starken Anzüge.Ändern des Texts eines Elements beim Verweisen auf ein Array

Hier ist der Code:

var log = []; 
var statusText = []; 

$http.post("url", {userid: currentUserID}) 
.then(function(response) 
{ 
    angular.forEach(response.data.status, function(value, key){ 
     this.push(value.complete); 
    }, log); 

    angular.forEach(document.getElementsByClassName("step-status"), function(value, key) 
    { 
     this.push(value) 
    }, statusText); 

    angular.forEach(statusText, function(value, key) 
    { 
     if (log[key] == 2) 
     { 
      statusText[key].text('Completed'); 
     } 
     else if (log[key] == 1) 
     { 
      statusText[key].text('In progress'); 
     } 
     else 
     { 
      statusText[key].text('Not started'); 
     } 
    }); 
}); 

Antwort

0

Dies liegt daran, Sie forEach auf response.data.status bewerben in Sie diesen Wert prüft dann wird es einige Zahlenwert wie 200

Versuchen sein wie diese

zu ändern
statusText = response.data; 
angular.forEach(response.data, function(value, key){ 
     this.push(value.complete); 
    }, log); 
+0

die Antwortdaten in JSON, verwende ich "response.data.status", um die Daten, die ich brauche, direkt an das Objekt zurückzugeben. Mein Problem ist, dass, wenn ich versuche, auf die Texteigenschaft eines der Elemente zuzugreifen, die in 'statusText' gespeichert sind, es mir sagt, dass es keine Funktion ist. – geolaw

0

Versuchen Sie, diese

var log = []; 
var statusText = []; 

$http.post("url", {userid: currentUserID}) 
.then(function(response) 
{ 
    angular.forEach(response.data.status, function(value, key){ 
     this.push(value.complete); 
    }, log); 

    angular.forEach(document.getElementsByClassName("step-status"), function(value, key) 
    { 
     this.push(value) 
    }, statusText); 

    angular.forEach(statusText, function(value, key) 
    { 
     if (log[key] === 2) 
     { 
      statusText[key] = 'Completed'; 
     } 
     else if (log[key] === 1) 
     { 
      statusText[key] = 'In progress'; 
     } 
     else 
     { 
      statusText[key] = 'Not started'; 
     } 
    }); 
}); 
+0

Leider ändert dies alles den Array-Eintrag in eine Zeichenfolge. – geolaw

+0

Was versuchst du zu tun? Sie können auf ein Array nicht wie eine Funktion 'statusText [key] .text ('')' zugreifen. –

+0

Ich versuche, die Texteigenschaft der Elemente festzulegen, die ich in diesem Array gespeichert habe. – geolaw

0

Lösung: Changed mein Ansatz für die Anzeige der zurückgegebenen Zeichenfolgen. Setzen Sie einfach jedes Element des Arrays auf die gewünschte Zeichenfolge, und verwenden Sie Bindungen, um die Daten anzuzeigen.

Danke für die Hilfe alle.

Verwandte Themen