تطبيق الويب DashCode: كيفية معالجة صفيف ملزمة برمجيًا في مصدر البيانات؟
-
30-09-2019 - |
سؤال
لقد بدأت في استخدام 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);
}
آمل أن تساعد هذه المعلومات!