Pregunta

He empezado a utilizar Dashcode para escribir una interfaz para la presentación de los datos del informe para algunas de nuestras herramientas de cacao. Estoy usando una fuente de datos y los enlaces de Dashcode para poblar los elementos en la vista Web, y todo parece estar funcionando bien hasta ahora.

Uno de los objetos de mi dataSource es una matriz de objetos que me gustaría para manipular mediante programación. Puedo cambiar los valores objeto de la matriz muy bien, pero si quiero reemplazar la matriz, o cualquier objetos de la matriz, mi mesa cota no es capaz de observar los objetos añadidos.

Este es el código que pensé que me dejaría fácilmente reemplazar la matriz ligada con nuevos contenidos:

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

Pero esto produce la excepción:

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

¿Hay algo que me falta que me deja manipular fácilmente el contenido de la matriz de programación?

¿Fue útil?

Solución

aquí hay una solución al problema:

1) Definir un objeto KVO en main.js primero. Este paso es importante ya que los datos de un determinado dataSource tiene que ser enlazable:

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

2) Crear una matriz que contiene los objetos que pertenecen a la clase "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);   
}

Espero que esta información ayuda!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top