الوصول إلى نموذج آخر في Ember - بالتأكيد هناك طريقة أفضل من ajax

أقوم بإدراج زر في الرأس يضيف مستخدمًا إلى مجموعة. هذا يعمل، ولكن إجراء استدعاء ajax للقيام بذلك لا يبدو صحيحًا. يبدو أنه يمكنني “فقط” استدعاء نموذج Group والقيام بذلك هناك، لكنني لا أجد مثالًا يفعل ذلك.

هذا في إضافة (plugin)…

أعتقد أنه يجب أن تكون هناك طريقة يمكنني من خلالها جعل demoGroup نموذجًا بدلاً من مجرد dict؟

      const demoServerGroupName = siteSettings.pfaffmanager_demo_server_group;
      const groups = Site.currentProp("groups");
      const router = container.lookup("router:main");

      const demoGroup = groups.find((g) => {
        return g.name === demoServerGroupName;
      });
      const hasDemoServer = servers.find((g) => {
        return g.hostname.includes("pfaffmanagerdemo");
      });
      if (demoGroup && !hasDemoServer) {
        api.decorateWidget("header-buttons:before", (helper) => {
          const addToDemoGroup = function () {
            window.console.log("need to add to group", demoGroup);

            const groupId = demoGroup.id;
            const url = `/groups/${groupId}/join.json`;
            ajax(url, {
              type: "PUT",
              data: currentUser.username,
            })
              .then(() => {
                router.transitionTo("/pfaffmanager/servers"); //TODO: refer to the route?
              })
              .catch(popupAjaxError);
          };

          return helper.h(
            "button#newDemoServer",
            {
              className: "btn btn-text btn-primary create headerLink",
              title: I18n.t("pfaffmanager.server.create_demo_server_title"),
              onclick: addToDemoGroup,
            },
            I18n.t("pfaffmanager.server.create_demo_server_short")
          );
        });
      }
إعجاب واحد (1)

إذا كان الكائن الذي تتعامل معه هو كائن نموذج Group، فيمكنك استدعاء addMembers عليه مباشرة. إذا لم يكن كذلك، يمكنك استخدام الطريقة Group.findAll.

للاستخدام، ابحث في الكود المصدري.

إعجاب واحد (1)

حسنًا. بالنظر عن كثب إلى ما يفعله groups.js، يبدو أنه يقوم بنفس استدعاء JSON الذي أقوم به تقريبًا، والأسوأ من ذلك، أن Group.findAll() الذي يبدو أنني سأحتاج إليه لاستخدام Group.addMembers يضيف استدعاء ajax إضافي أتجنبه حاليًا. ربما لم يكن الكود الخاص بي سيئًا كما اعتقدت!

شكرًا!

إعجاب واحد (1)