TashCode Web App: Как программно манипулировать граничным массивом в DataSource?

StackOverflow https://stackoverflow.com/questions/4138872

Вопрос

Я начал использовать dashcode, чтобы написать интерфейс для представления данных отчета для некоторых наших инструментов какао. Я использую источник данных Dashcode и привязки для заполнения элементов в веб-просмотре, и все это, кажется, хорошо работает.

Один из объектов в моем источнике DataSource - это множество объектов, которые я хотел бы манипулировать программно. Я могу изменить значения объекта в массиве просто отлично, но если я хочу заменить массив, или любые объекты в массиве, моя связанная таблица не сможет наблюдать за добавленными объектами.

Вот код, который я подумал, позволит мне легко заменить связанный массив новым контентом:

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

Но это бросает исключение:

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

Есть ли что-то, что мне не хватает, что позволит мне легко манипулировать содержанием массива программно?

Это было полезно?

Решение

Вот решение проблемы:

1) Определите объект KVO в Main.js первым. Этот шаг важен, поскольку данные данного источника данных должны быть обязательными:

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

2) Создайте массив, содержащий объекты, принадлежащие к классу «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);   
}

Я надеюсь, что эта информация поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top