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?

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top