Ich habe eine Ember-Komponente mit einer Vorlage, die eine Tabelle enthält. In meiner Komponente möchte ich Ajax-Anrufe an einen Drittanbieter-Dienst ausgeben und einige Daten abrufen. Nachdem ich diese Daten erhalten hatte, musste ich einen weiteren nachfolgenden Ajax-Aufruf basierend auf der Eingabe durchführen. Da dies einige Zeit dauern würde, möchte ich die Ansicht nach und nach aktualisieren, wenn der Ajax beendet ist. In einem visuellen Sinn - dies würde eine neue Zeile zu der Tabelle hinzufügen, nachdem eine Anfrage verarbeitet wurde.Dynamischer Inhalt wird geladen
Momentan erlaubt uns ember nur, ein Array-Objekt über seine model()
-Methode im Router zu übergeben.
Ich schaute in mehrere Projekte wie List-view, aber es löst nicht das oben erwähnte Problem.
EDIT: -
Im Folgenden finden Sie, was ich derzeit tue -
import Ember from 'ember';
export default Ember.Route.extend({
model() {
var list = [];
var promise = $.ajax({
type: 'GET',
url: 'thirdPartyService'
});
promise = promise.then(function(data){
data = JSON.parse(data);
return data[1];
});
promise.then(function(data){
for (var i = 0; i < data.length; i++) {
var idea = data[i];
var url = "thirdPartyService";
var secondPromise = $.ajax({
type: 'GET',
url: url,
dataType: "text"
});
secondPromise = secondPromise.then(function(data){
var result = x2js.xml_str2json(data);
return result;
});
secondPromise.then(function(data){
list.pushObject(item);
});
return secondPromise;
}
});
return list;
}
});
Meine Vorlage
<tbody>
{{#each model as |idea|}}
<tr>
<td><input type="checkbox" name="id" value="{{idea.id}}"></td>
<td>{{idea.field4}}</td>
<td>{{idea.field5}}</td>
<td>{{idea.field}}</td>
<td>{{idea.field2}}</td>
<td>{{idea.field3}}</td>
</tr>
{{/each}}
</tbody>
Die Ember Ansicht gerendert wird, wenn die Liste ändert. Was ich tun möchte, ist - eine Zeile zur Tabelle hinzufügen, wenn list.pushObject(item);
aufgerufen wird. Derzeit - ich sehe, dass die Ansicht wartet, bis alles zurückgegeben wird.
Auch diese Anwendung ist eine Elektronen-App - deshalb habe ich kein Backend per sag und verwende keine Glutendaten. Ich rufe einige Dienste von Drittanbietern an, also sind keine Glut-Modelle beteiligt.
Uhm. Ember erlaubt alle Arten von Bindungen. Muss nur in der Steuerung oder Route vordefiniert sein. Bitte zeigen Sie uns, was Sie versucht haben oder wonach Sie suchen. Die aktuelle Frage ist zu weit gefasst, um sie zu beantworten oder Annahmen zu treffen. –
@kristjabreinhold Ich verbesserte die Antwort mit dem aktuellen Arbeitsmodell und einigen Details meiner Umgebung (Ich baue eine Elektronen-App) – Chan