ember-bootstrap ошибки при рендеринге формы - PullRequest
1 голос
/ 17 мая 2019

У меня проблема с использованием ember-bootstrap для визуализации формы.Когда маршрут посещен, ничего не отображается, и в консоли появляется сообщение

enter image description here

.

Проект является проектом Bootstrap 3и я только что установил Ember-Boostrap.Чтобы сделать это, я сделал следующее:

ember install ember-bootstrap
ember generate ember-bootstrap --preprocessor=sass
ember generate ember-bootstrap --bootstrap-version=3

Из чтения документа я считаю, что это была правильная последовательность команд?

Затем я создал новый маршрут и в шаблоне я поместилследующее:

{{#bs-form formLayout=formLayout model=this onSubmit=(action "submit") as |form|}}
            {{form.element controlType="email" label="Email" placeholder="Email" property="email" required=true}}
            {{form.element controlType="password" label="Password" placeholder="Password" property="password" required=true helpText="Minimum 6 characters"}}
            {{form.element controlType="radio" label="Radio" property="radio" options=radioOptions optionLabelPath="label"}}
            {{form.element controlType="checkbox" label="Checkbox" property="checkbox"}}
            {{form.element controlType="textarea" label="Textarea" property="textarea"}}
            {{bs-button defaultText="Submit" type="primary" buttonType="submit"}}
          {{/bs-form}}
{{outlet}}

Пример шаблона из компонента формы в документе ember-bootstrap.

Как я уже сказал, когда я иду на новый маршрут, я ничего не получаю исообщение об ошибке, показанное выше.

Я чувствую, что, должно быть, я пропустил некоторую часть указаний ... что-то явно отсутствует?


РЕДАКТИРОВАТЬ ОТВЕТ НА ОТВЕТFROM REAL_ATE

Итак, чтобы ответить на вопросы, поднятые Крисом (real_ate) ниже.Я использую Ember 3.8.

Теперь я был очень рад показать отличное «Могу я задать вопрос», и я еще не смотрел эти недели, поэтому я пошел смотреть.Мне показалось странным, что вы получили ошибку, отличную от меня, поэтому я решил начать новый проект и попытаться провести собственную реконструкцию.

Я обнаружил, что я получил именно ту ошибку, которую вы видели (другие могут видеть тот сегмент видео здесь ), а не тот, который я показал на снимке экрана.

Так что я довольно озадачен этим, но это подтверждает ваш вывод.

Мое лучшее предположение заключается в следующем ... примерно в то же время я работал над некоторыми проблемами с другим аддоном и для документирования процесса я сделал несколько снимков экрана с этими ошибками.Я полагаю, что я выбрал неправильный дамп экрана и вставил его в вопрос.Как ни странно, Крис в начале сегмента упомянул кое-что о том, что я на самом деле не скопировал трассировку стека, а вместо этого использовал снимок экрана с трассировкой стека - возможно, если бы я на самом деле скопировал трассировку стека, я бы с меньшей вероятностью сделал что,кажется вероятным, что я это сделал.

Итак ... ради потомков первоначальная ошибка была ...

Uncaught Error: Assertion Failed: An action named 'submit' was not found in <est@controller:login::ember231>
    at assert (index.js:163)
    at makeClosureAction (glimmer.js:6069)
    at action (glimmer.js:5995)
    at Object.evaluate (runtime.js:266)
    at AppendOpcodes.evaluate (runtime.js:72)
    at LowLevelVM.evaluateSyscall (runtime.js:3471)
    at LowLevelVM.evaluateInner (runtime.js:3417)
    at LowLevelVM.evaluateOuter (runtime.js:3409)
    at VM.next (runtime.js:5530)
    at TemplateIteratorImpl.next (runtime.js:5632)

, которая была устранена путем предоставления действия 'submit' на контроллересоздан для этой цели и затем обнаружил другую проблему с примером .hbs из ember-bootstrap, включая formLayout=formLayout, который не существует, если вы его не определили, и ошибка для этого выглядит следующим образом ...

Uncaught Error: Assertion Failed: must provide a valid `formLayout` attribute.
    at Object.assert (index.js:163)
    at Class.<anonymous> (bs-form.js:11)
    at ComputedProperty.get (metal.js:2966)
    at _get (metal.js:1591)
    at RootPropertyReference.compute (glimmer.js:535)
    at RootPropertyReference.value (glimmer.js:384)
    at SimpleClassNameBindingReference.compute (glimmer.js:4002)
    at SimpleClassNameBindingReference.value (reference.js:367)
    at ClassListReference.value (runtime.js:1283)
    at ComponentElementOperations.flush (runtime.js:1645)

... это было решено, как я описал в моем ответе ниже .

Так что спасибо Крису и Джен и извините за вводящий в заблуждение вопрос.

Ответы [ 2 ]

1 голос
/ 20 мая 2019

спасибо за вопрос и за такой полный пример того, как воссоздать проблему.

Я потратил некоторое время, пытаясь воссоздать проблему, которая у вас есть, но я не смог найти ту же проблему, и я не смог исправить ее так же, как вы описали.Я даже попробовал это в более старой версии Ember, чтобы увидеть, было ли это как-то связано с этим, и это не помогло.

Одна вещь, которую я узнал, когда пытался это сделать, это то, что инициализацияВы делаете, так как на самом деле можно выполнить 3 различных шага на всех строках:

ember install ember-bootstrap --preprocessor=sass --bootstrap-version=3

Это показывает ошибку, что --preprocessor is not a known parameter for ember-cli, но все равно работает, как и ожидалось. ?

Мы также нажалив ту же проблему, где нам нужно было определить formLayout для формы, чтобы заставить ее работать, но ошибка, которую мы увидели, была не такой, как у вас. ould Не могли бы вы сказать нам, над какой версией Ember вы работаете??

Я вижу, что вы уже ответили на свой вопрос, но мне все равно было бы интересно разобраться с ошибкой, которую вы видели (если вы заинтересованы)


На этот вопрос был дан ответ в рамках 2-го сезона 3-го сезона «Могу я задать вопрос». Если вы хотите, чтобы мы обсудили этот ответ полностью, вы можете посмотреть видео здесь: https://youtu.be/nQsG1zjl8H4

1 голос
/ 18 мая 2019

Ну, я собираюсь ответить на это сам ради других, у кого может быть такая же проблема. Я получил некоторую помощь от сопровождающего дополнения через разногласия Emberjs и процитировал его ...

Примеры на ember-bootstrap.com, к сожалению, не очень умные, в том, что они показывают ограниченные свойства как таковые, а не с фактическим значение. Например, formLayout=formLayout имеет смысл только если у вас также есть свойство formLayout на вашем контроллере. Если это не случай (который я предполагаю), formLayout будет неопределенным. Ты можешь попробуйте удалить это и посмотреть, поможет ли это? (или заменить на константу значение как formLayout = "горизонтальный")

Я сделал то, что он предложил, и это решило проблему.

...