Dashcode Web App: Как программно манипулировать связанным массивом в источнике данных? - PullRequest
0 голосов
/ 10 ноября 2010

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

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

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

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.

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

1 Ответ

0 голосов
/ 13 февраля 2011

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

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

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

...