DashCode Webアプリ:DataSourceでバウンド配列をプログラムで操作する方法は?

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

質問

DashCodeを使用して、ココアツールのいくつかのレポートデータを提示するためのインターフェイスを作成し始めました。私はダッシュコードのデータソースとバインディングを使用して、WebViewの要素を入力していますが、これまでにうまく機能しているようです。

私のDataSourceのオブジェクトの1つは、プログラムで操作したいオブジェクトの配列です。配列内のオブジェクト値を正常に変更できますが、配列、または配列内のオブジェクトを交換する場合、バインドされたテーブルは追加されたオブジェクトを観察できません。

これが、バインドされた配列を新しいコンテンツに簡単に置き換えることができると思ったコードです。

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)最初にmain.jsでKVOオブジェクトを定義します。特定のDataSourceのデータはバインド可能でなければならないため、このステップは重要です。

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