Issue T8262
Visible to All Users

Infinite Recursion

created 4 years ago

We have been evaluating survey vue for use with our product (and then licensing) and we came across a fairly major blocker.

When using survey-vue with the following data (from survey-creator), the page falls into an infinite loop of some sort, and locks up.

No error is logged in the console, but the browser prompts me to stop the page's javascript.

We are using Vue v2.6.11, with the composition-api. We are using survey-creator@1.8.79 survey-knockout@1.8.79 survey-vue@1.8.79 surveyjs-widgets@1.8.79 from NPM.

It appears to be related to the matrix questions, as when I remove those, then the survey loads properly.

Other surveys have worked fine.

Code
{ "title": "Moving the Needle: A Review of the Landscape and Evolution (Module 1)", "description": "EVALUATION FORM", "pages": [ { "name": "page1", "elements": [ { "type": "matrix", "name": "question7", "title": "Objectives", "columns": [ { "value": "Column 1", "text": "Strongly Disagree" }, { "value": "Column 2", "text": "Disagree" }, { "value": "Column 3", "text": "Neutral" }, { "value": "Column 4", "text": "Agree" }, { "value": "Column 5", "text": "Strongly Agree" } ], "rows": [ { "value": "Row 1", "text": "Outline the burden of type 2 diabetes" }, { "value": "Row 2", "text": "Describe the current and new antihyperglycemic treatment options for patients with T2D" }, { "value": "Row 3", "text": "Highlight the diabetes guidelines recommendations for individualizing diabetes pharmacotherapy" }, { "value": "Row 4", "text": "Discuss new formulation of oral GLP1 as an addition to our antihyperglycemic therapy options" } ] }, { "type": "matrix", "name": "question8", "title": "The Program Content:", "columns": [ { "value": "Column 1", "text": "Strongly Disagree" }, { "value": "Column 2", "text": "Disagree" }, { "value": "Column 3", "text": "Neutral" }, { "value": "Column 4", "text": "Agree" }, { "value": "Column 5", "text": "Strongly Agree" } ], "rows": [ { "value": "Row 1", "text": "Was relevant to family medicine" }, { "value": "Row 2", "text": "Met my expectations" }, { "value": "Row 3", "text": "Was well organized" }, { "value": "Row 4", "text": "Disclosure of potential conflicts of interest was clearly communicated" }, { "value": "Row 5", "text": "I will use the information I learned in my practice" } ] }, { "type": "boolean", "name": "question5", "title": "Did you perceive any degree of bias in any part of the program?*" }, { "type": "text", "name": "question6", "title": "*If yes, please describe:" }, { "type": "comment", "name": "question2", "title": "Describe two ways in which you will change your practice as a result of attending this program:" }, { "type": "comment", "name": "question4", "title": "What was the least effective part of this program? Why?" }, { "type": "comment", "name": "question3", "title": "Please list any topics you would like to see addressed in future programs:" }, { "type": "comment", "name": "question1", "title": "General Comments:" } ] } ] }

Answers approved by surveyjs Support

created 4 years ago

Hello Dougal,
We will check and comeback to you.

Thank you,
Andrew
SurveyJS Team

    Show previous comments (2)

      Hello Dougal,
      Please let us know about your progress. If we be able to reproduce the issue, we will start to work on the fix immediately.

      Thank you,
      Andrew
      SurveyJS Team

        Hi Andrew,

        I still do not know the root cause, or how to repro this issue; but I was able to resolve it by using `markRaw` as so:

        markRaw(new Model(JSON.parse(surveyContent))) (https://v3.vuejs.org/api/basic-reactivity.html#markraw)

        Do you anticipate any unintended side-effects from this sort of solution?

        Thanks again,

        Dougal

          To be honest, we don't know. We never used it ourselves.

          Thank you,
          Andrew
          SurveyJS Team