2017-12-24 3 views
-3

10 Wie Sie im Code sehen können, ich habe versucht, Array-Werte innerhalb eines Objekts dynamisch zu erstellen, hat es kein Problem beim Debuggen, aber wenn ich versuchte, Push-Methode zu verwenden Das Array löst einen Fehler aus. Ich arbeite an Ionic 3 mit eckigem 4. Ich rufe die Funktion im keyup.enter-Ereignis des Eingabefeldes auf.nicht in der Lage, Werte in Javascript-Array innerhalb Objekt

// this is the object 
private newsFeeds=[ 
{ 
avatarUrl:’…/assets/fb/avatar.png’, 
userName:‘Karim Benzema’, 
time:‘16 minutes ago’, 
caption:‘Wow!!!’, 
imageUrl:‘https://upload.wikimedia.org/wikipedia/commons/e/ec/Ara_ararauna_Luc_Viatour.jpg’, 
like:‘Like’, 
numberOfLikes:2, 
comments:['hello'], 
isCommentEnable:false 
}, 
{ 
avatarUrl:’…/assets/fb/avatar2.png’, 
userName:‘Unknown Singh’, 
time:‘2 hrs ago’, 
caption:‘Pc:Unknown’, 
imageUrl:‘https://i.pinimg.com/736x/50/e0/b6/50e0b65efd2d634053d7a8d1cd9d94fc--so-funny-funny- 
stuff.jpg’, 
like:‘Like’, 
numberOfLikes:3, 
comments:[], 
isCommentEnable:false 
} 
]; 

postComment(index,value){ 
console.log(`${index} : ${value}`); //shows correct index and value 
this.newsFeeds[index].comments.push(value); //-->error 
//Throws runtime error ‘comments.push is not a function’ 
} 

Mein HTML-Code:

<ion-list [virtualScroll]= “newsFeeds”> 
<ion-card *virtualItem=“let f; let i=index”> 
<span *ngIf=“f.isCommentEnable”> 
<input type=“text” [(ngModel)]=“f.comments” (keyup.enter)=“postComment(this.i,item.value);” #item> 
</span> 
</ion-card> 
</ion-list> 
+0

Ihr Code zeigt sind Fütterung, dass Sie mit Smart Anführungszeichen anstelle von dummen Anführungszeichen: Ist das ein Fehler beim Einfügen von Kopien, oder verwenden Sie in Ihrem Code intelligente (und ungültige) Anführungszeichen? – Terry

+0

Das war ein Copy Paste Fehler ... –

+0

@ j.doe, haben Sie dieses Problem jemals gelöst? – Iancovici

Antwort

0

Versuchen Sie Ihr Array mit den entsprechenden Typ deklarieren:

private newsFeeds : Array<any> = ... 
+0

Es funktioniert nicht –

0

Werke für mich

Stellen Sie sicher, Ihr Objekt korrekt interpretiert wird. Ich musste deine einfachen Anführungszeichen ersetzen. Sie können es testen, indem console.log(newsFeeds);

private newsFeeds=[ 
    { 
     avatarUrl:'…/assets/fb/avatar.png', 
     userName:'Karim Benzema', 
     time:'16 minutes ago', 
     caption:'Wow!!!', 
     imageUrl:'https://upload.wikimedia.org/wikipedia/commons/e/ec/Ara_ararauna_Luc_Viatour.jpg', 
     like:'Like', 
     numberOfLikes:2, 
     comments:['hello'], 
     isCommentEnable:false 
    } 
]; 

und stellen Sie sicher, dass Sie eine Nummer und String, indem er erklärt in Funktionsargumente

ngOnInit() { 
    this.postComment(0, 'comment'); 
    console.log(this.newsFeeds); 
    } 


    postComment(index: number,value: string){ 
    this.newsFeeds[index].comments.push(value); 



    } 

enter image description here

+0

Es funktioniert nicht für mich .... eigentlich rufe ich diese Funktion auf Eingabefeld keyup.enter Ereignis, ich arbeite an Ionic 3 mit eckigen und Typoskript und ich bin ein interner Entwickler, meine Aufgabe ist Facebook-Stil Kommentar-Funktion in meiner Ionic App zu implementieren ... hier ist der Teil von HTML-Code.

+0

@ j.doe können wir Ihnen nur helfen mit dem, was Sie hier veröffentlicht haben. Dies ist eindeutig ein Problem mit Ihren Eingaben, denn das Objekt und die Funktion scheinen gut zu funktionieren. – Iancovici

+0

Meine Eingaben waren richtig, ich habe sie über das Konsolenprotokoll vor dem Aufruf der Push-Methode überprüft und der Wert von Index und Wert war in Ordnung, aber wirft einen Fehler auf Push? Hier ist ein paar mehr HTML-Code zum besseren Verständnis