تطبيق الويب DashCode: كيفية معالجة صفيف ملزمة برمجيًا في مصدر البيانات؟

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

سؤال

لقد بدأت في استخدام 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.

هل هناك شيء أفتقده من شأنه أن يتيح لي التعامل بسهولة مع محتويات الصفيف برمجيًا؟

هل كانت مفيدة؟

المحلول

هنا حل للمشكلة:

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