ام البيانات لا يتم تحديث بعد اياكس دعوة
-
21-12-2019 - |
سؤال
لدي الكود التالي وأعتقد أنني أفعل شيئا خاطئا بشكل أساسي.
(defn world-view [data owner opts]
(reify
om/IInitState
(init-state [_]
(om/update! data #(assoc % :world vec)))
om/IWillMount
(will-mount [_]
(go (let [world (<! (get-world (:dimensions opts)))]
(log (get-in world [9 9]))
(om/update! data #(assoc % :world world)))))
om/IRender
(render [this]
(log (get :world data))
(apply dom/table nil
(om/build-all row (:world data))))))
أنا إجراء مكالمة اياكس عن بعد في om/IWillMount
مثل هذا:
om/IWillMount
(will-mount [_]
(go (let [world (<! (get-world (:dimensions opts)))]
(log (get-in world [9 9]))
(om/update! data #(assoc % :world world)))))
أنا أتوقع ناقلات د 2 مرة أخرى من المكالمة عن بعد وهذا يعمل لأنني يمكن تسجيل عناصر المصفوفة مع
(log (get-in world [9 9]))
أنا ثم باستخدام om/update
لتحديث بنية البيانات.
ولكن عندما يتم استدعاء العرض ، لا يبدو أن البيانات يتم تحديثها ، يمكنني اختبار ذلك من خلال محاولة تسجيل بنية البيانات
log (get :world data))
هذا لا يسجل شيئا.
لا أستطيع أن أرى ما أفعله خطأ أو لماذا لم يتم تحديث بنية البيانات.
المحلول
om/update!
تعيين المؤشر إلى قيمة معينة ، لذلك كنت في الأساس تعيين وظيفة للمؤشر الخاص بك.أعتقد أنه يجب عليك استخدام om/transact!
بدلا من ذلك.
لا تنتمي إلى StackOverflow