Question

J'ai commencé à utiliser Dashcode pour écrire une interface pour présenter les données du rapport pour certains de nos outils de cacao. J'utilise une source de données de Dashcode et fixations pour remplir les éléments de la WebView, et il semble tout fonctionner bien jusqu'à présent.

L'un des objets de mon DataSource est un tableau d'objets que je voudrais manipuler par programme. Je peux modifier les valeurs de l'objet dans le tableau très bien, mais si je veux remplacer le tableau, ou tout autre objet dans le tableau, ma table liée n'est pas en mesure d'observer les objets ajoutés.

Voici le code que je pensais me fit entrer facilement le tableau lié avec du nouveau contenu:

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

Mais cela jette l'exception:

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

Y at-il quelque chose que je suis absent qui me permettra de manipuler facilement le contenu du tableau programme?

Était-ce utile?

La solution

ici est une solution au problème:

1) définir un objet KVO dans main.js premier. Cette étape est importante car les données d'une source de données donnée doit être bindable:

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

2) Créer un tableau qui contient des objets qui appartiennent à la 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);   
}

J'espère que cette information aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top