Frage

eine Schnittstelle mit Dashcode schreiben für die Darstellung der Berichtsdaten für einige unserer Cocoa Tools

Ich habe angefangen. Ich verwende eine Dashcode Datenquelle und Bindungen, die Elemente in der WebView zu füllen, und es scheint alles gut so weit zu arbeiten.

Eine der Aufgaben in meinem Datasource ist ein Array von Objekten, dass ich programmatisch manipulieren möchte. Ich kann ganz gut die Objektwerte im Array ändern, aber wenn ich das Array ersetzt werden soll, oder alle Objekte in dem Array, meine gebundene Tabelle ist nicht in der Lage die hinzugefügten Objekte zu beobachten.

Hier ist der Code, dass ich dachte, würde lassen Sie mich einfach das gebundene Array mit neuen Inhalten ersetzen:

var dataSource = dashcode.getDataSource("reportData");
var newDetailArray = testArray();
dataSource.setValueForKeyPath(newDetailArray, "content.detailArray");

Aber das wirft die Ausnahme:

Exception while binding "content" to keypath "arrangedObjects " TypeError: Result of expression 'this.object.valueForKeyPath' [undefined] is not a function.

Gibt es etwas, was ich bin fehlt, dass lässt mich leicht den Inhalt programmatisch des Arrays manipulieren?

War es hilfreich?

Lösung

Hier ist eine Lösung für das Problem:

1) Definieren Sie ein KVO Objekt in main.js zuerst. Dieser Schritt ist wichtig, da die Daten eines bestimmten Datenquelle sein bindable hat:

anObj = Class.create(DC.KVO, {
    constructor: function(name) {
        this.name = name;
    }
});

2) Erstellen Sie ein Array, das Objekte enthält, die auf die "anObj" Klasse gehören:

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);   
}

Ich hoffe, diese Informationen helfen!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top