هل من الممكن إخفاء النموذج الأولي لجهاز جافا سكريبت!ما هو الغموض وراء هذا؟

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

سؤال

أنا أستخدم Openui5.هناك وظيفة منشئ لزر التحكم في UI، غير قادر على رؤية خصائص النموذج الأولي للزر ولكن نفس الشيء عند تنفيذه في وحدة التحكم في المتصفح، يظهر!

giveacodicetagpre.

نفس الرمز عند تنفيذ المستعرض في وحدة التحكم، فإنه يعمل!

jsbin -> http://jsbin.com/tepum/1/edit!a>

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

المحلول

بعد تشغيل الرمز، أجد أن إنشاء المثيل الأول من SAP.M.Button يسبب البرنامج النصي لتغيير النموذج الأولي من SAP.M.Button. انها صالحة في جافا سكريبت ولكن ليس ذكيا جدا إذا سألتني.

يؤدي الإبداع الأول إلى طلب متزامن (لا لا أيضا) لجلب المكتبة - Param.json.

إذا قمت بتشغيل التعليمات البرمجية في المرة الثانية، فسيكون لديك نموذج portoty.move لأن إنشاء مثيل من الزر لن يغير الزر "النمط".

العاصمة م في الخطوة سوف تشير إلى وظيفة منشئ لذلك أود أن أتأريد تغييرها إلى الحالة الصغيرة.

منذ جلب المعلمات متزامنة، يمكنك إنشاء المثيل الأول ثم قم بتعيين النموذج الأولي:

giveacodicetagpre.

تخميني هو أن هذا يتم إجراء عناصر تحكم تحميل كسول، إذا لم يتم إنشاء زر أبدا، فلن يتم تحميل ملفات تكوين JSON هذه أبدا عناصر التحكم غير المستخدمة. لديها اثنين من العيوب رغم ذلك.

  1. يجب عليك إنشاء مثيل أولا قبل أن تتمكن من ضبط النموذج الأولي.
  2. يتم تحميل ملفات التكوين بشكل متزامن حتى عند إنشاء المثيل الأول من العديد من الضوابط مع اتصال بطيء قد يتسبب في أن يكون التطبيق غير مستجيب.
  3. أفضل طريقة ستكون للحصول على وظيفة المصنع لإرجاع وعد حتى تقوم بإنشاء عنصر تحكم بنفس الطريقة في كل مرة ويمكن إحضار ملفات التكوين غير متزامنة.

    [تحديث]

    تبحث في التكوين يبدو أنه يتعين التكوين لمكتبة واجهة المستخدم الرسومية بأكملها، لذلك لا أستطيع أن أرى أي سبب يجعل هذا يتم تحميله فقط بعد إنشاء مثيل أولى. مكتبة تغيرات تعاريف كائن عند إنشاء مثيلات ليس من السهل جدا تمديدها لأنه لا يمكن التنبؤ به. إذا تغير النموذج الأولي فقط على الإبداع الأول، فيجب أن تكون على ما يرام، ولكن يبدو أن صانعي المكتبة لا يريدون تمديد الناس أو لن يجعل تعريف الكائن غير متوقع. إذا كان هناك وثائق API متاحة، فربما حاول التحقق من ذلك.

    [تحديث]

    يبدو أن الطريقة "الصحيحة" لتوسيع نطاق الضوابط هي استخدام تمديد .

نصائح أخرى

href="https://stackoverflow.com/users/1641941/hmr">hmr صحيح الطريقة الصحيحة لتوسيع عنصر تحكم هو باستخدام وظيفة تمديد المقدمة من كائنات UI5 المدارةانظر http://jsbin.com/linob/1/edit

في المثال أدناه عند تصحيح الأخطاء من قبل الآخرين، ستلاحظ أن عنصر التحكم كسول محملا عند الحاجة، يتم فقد أي تغييرات تقوم بها قبل تحميل

giveacodicetagpre.

لا يخفي النموذج الأولي لكل حد ذاته. إذا انتهكت وظيفة المنشئ بشكل طبيعي ثم تحصل على النموذج الأولي لهذا الوظيفة. ولكن، إذا كانت وظيفة المنشئ بإرجاع بعض الكائن الآخر ثم تحصل على هذا النموذج الأولي للكائن الآخر، لذلك غير صالح أن نفترض أنه فقط لأنك تضاف إلى النموذج الأولي الزر الذي عند استدعاء زر جديد () سترى طريقك على أي شيء لقد عدت. أنا متأكد من أنك إذا قمت بإلغاء الحيافة التي ستجد فيها الكود أن المنشئ الذي تتصل به لديه "إرجاع New Someotherinstanceofbutton () أو ما شابه ذلك في نهاية ذلك.

تحرير: حسنا، من الصعب بعض الشيء أن نرى ما يحدث بالفعل في رمز SAP هذا، ولكن يبدو أن لديهم رمز يبحث عن نماذج النماذج الضوئية لإضافة ميزات إليهم، مثل: SAP.UI.Core.EnabledPropagator ، هذه الأشياء لا تعمل حتى تقوم بالفعل بإنشاء زر. لذلك إذا قمت بتغيير التعليمات البرمجية الخاصة بك لإرساء الزر في الصفحة، فقم بإضافة إلى النموذج الأولي الخاص بها، ثم قم بإنشاء الطريقة واستدعاءها، فهي تعمل بشكل جيد. مثل ذلك:

http://jsbin.com/benajuko/2/edit

لذلك أعتقد أن إجابتي، عند تشغيله من وحدة التحكم، انتهى به Mucking حول هذا النموذج الأولي، بينما كنت في الاختبار الخاص بك كنت تضيفها إلى النموذج الأولي، ثم قم بإنشاء الزر لأول مرة (والتي تغير النموذج الأولي مرة أخرى) ثم أحاول الاتصال القديم الخاص بك، والتي لم تعد هناك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top