سؤال

لست متأكدًا مما إذا كنت أسيء فهم الربط في Flex. أنا أستخدم إطار عمل Cairngorm. لدي المكون التالي مع رمز مثل:

        [Bindable]
        var _model:LalModelLocator = LalModelLocator.getInstance();
....
<s:DataGroup    dataProvider="{_model.friendsSearchResults}"
                     includeIn="find"
                     itemRenderer="com.lal.renderers.SingleFriendDisplayRenderer">
            <s:layout>
                <s:TileLayout orientation="columns"    requestedColumnCount="2" />
            </s:layout>         </s:DataGroup>

في محدد موقع النموذج:

[Bindable]
public var friendsSearchResults:ArrayCollection = new ArrayCollection();

يوجد داخل عارض العنصر زر يدعو أمرًا وداخل نتائج الأمر ، يوجد سطر مثل هذا:

model.friendsSearchResults = friendsSearchResults;

وضع نقاط الاستراحة والتخطي عن الكود الذي أكدت أن هذا مثل الاتصال ويتم تحديث FriendsSearchResults.

إلى فهمي إذا قمت بتحديث متغير قابل للربط ، فيجب أن يعيد تشغيل S: Datagroup تلقائيًا والذي يحتوي على بيانات DataProvider لهذا المتغير.

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

المحلول

من الواضح أنه لا يوجد خطأ في عينة الكود. يجب أن تعمل لذلك أعتقد أن هناك مشكلة في مكان آخر.

أوصي بتعيين نقطة توقف حيث dataProvider تم تعيينه وأيضًا حيث model.friendsSearchResults تم تعيينه. تأكد من أنهما يشيران إلى نفس مثيل الكائن. ثم خطوة من خلال تعيين الممتلكات والحدث المقابل.

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

[Bindable]
public var results:ArrayCollection;

ل

[Bindable("resultsChanged")]
private var _results:ArrayCollection;
public function get results():ArrayCollection {
    return _results;
}
public function set results(value:ArrayCollection):Void {
    _results = value;
    dispatchEvent(new Event("resultsChanged"));
}

شيء آخر يجب وضعه في الاعتبار هو أن الروابط تخفي بعض الأخطاء مثل الاستثناءات المرجعية الخالية. يفترضون أن القيمة ببساطة غير متوفرة بعد وقمع الخطأ. سيساعد التنقل عبر المهمة والروابط ذات الصلة في العثور على مشكلة كهذه.

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