updateData not calling completion function; no such property as "a.data"

  • 1
  • Problem
  • Updated 2 years ago
  • Solved
We have been using a set of pages for a long time without problems, but are just now finding problems.  It could be these problems started after the June update, but we are not 100% sure because the error was silent (except in the browser console).

In our code, we do a series of async calls - to a web service, and then to Skuid to save data, and then in that callback, we call skuid.model.updateData to refresh our models.  In the past, that last call to updateData has worked and the completion function has been called.  But now, we are getting an error in the browser that "a.data" doesn't exist (deep inside Skuid (at skuid__SkuidJS (26,10954)) and the completion function is never executed.

There has been no change to this code in a very long time, but of course the data in SFDC has changed so it's possible this is a bug in our code.  I have validated that the array of models we are sending to updateData (three models) all appear legit, and not unusually large (largest one has 25 items).

We see this in multiple browsers, and is appears to happen 100% of the time - and it's really easy to reproduce.  Because this is multiple levels of nested async callbacks, there isn't a simple piece of code for me to post - but glad to post whatever could be helpful.  However, it might be easiest to login to our site and experience the failure first-hand.  In anticipation of that, I have granted Skuid rights to login to our SFDC instance.  The page is in the module "LMS" and is called "LMS_Courses".  If you preview it, you should see a series of training courses, and can expand the top most entry ("Operations Series").  If you then click on the "UD101" course, a page should popup starting the course.  If you then close that page (no need to wait once it is loaded), all the async logic will begin and you will see the error in the browser console.

If there is a better way to debug this, please let me know.

Thanks,

Chris
Photo of Chris

Chris

  • 1,632 Points 1k badge 2x thumb

Posted 2 years ago

  • 1
Photo of Chris

Chris

  • 1,632 Points 1k badge 2x thumb
Sorry - but need to bump this hoping to get some help from Skuid.  If there is a better way for me to submit this for help, let me know.  From what I can see, this appears to be a bug inside Skuid...
Photo of Karen Waldschmitt

Karen Waldschmitt, Official Rep

  • 8,240 Points 5k badge 2x thumb
Chris~

It looks like there are some issues with the JavaScript on the page. In your renderCourseStatus snippet, you need to be appending the field element instead of replacing it. Setting variable a to a string instead of an element is what was causing the error with the data method.

For example, on line 34,
  • Currently: field.element = '<div class="lms-status nx-fieldtext">' + summary + '</div>';
  • Should be: field.element.append( '<div class="lms-status nx-fieldtext">' + summary + '</div>’);
Please let us know if you have any questions.

Thanks!
Karen