Dashcode Web App: come manipolare programmazione gamma legato a dataSource?
-
30-09-2019 - |
Domanda
Ho iniziato a utilizzare Dashcode a scrivere un'interfaccia per la presentazione dei dati del rapporto per alcuni dei nostri strumenti di cacao. Sto usando una fonte di dati Dashcode e attacchi per popolare gli elementi in WebView, e sembra tutto funzionare bene finora.
Uno degli oggetti del mio dataSource è un array di oggetti che vorrei di manipolare a livello di codice. Posso cambiare i valori degli oggetti nella matrice più che bene, ma se voglio sostituire la matrice, o altri oggetti nella matrice, il mio tavolo limite non è in grado di osservare gli oggetti aggiunti.
Ecco il codice che ho pensato che mi permetteva di sostituire facilmente la matrice legata con nuovi contenuti:
var dataSource = dashcode.getDataSource("reportData");
var newDetailArray = testArray();
dataSource.setValueForKeyPath(newDetailArray, "content.detailArray");
Ma questo genera l'eccezione:
Exception while binding "content" to keypath "arrangedObjects " TypeError: Result of expression 'this.object.valueForKeyPath' [undefined] is not a function.
C'è qualcosa che mi manca che mi permette di manipolare facilmente i contenuti della matrice di programmazione?
Soluzione
ecco una soluzione al problema:
1) Definire un oggetto KVO in main.js prima. Questo passaggio è importante poiché i dati di un determinato dataSource deve essere associabile:
anObj = Class.create(DC.KVO, {
constructor: function(name) {
this.name = name;
}
});
2) Creazione di un array che contiene oggetti che appartengono alla classe "anObj":
function switchContent(event)
{
var myPerson = new anObj('Paul');
var myArray = new Array();
myArray.addObject(myPerson);
// 'dataSource' has to be defined in Dashcode as usual
var ds = dashcode.getDataSource('dataSource');
// replace content of datasource ds with myArray
ds.setContent(myArray);
}
Spero che queste informazioni aiuta!