Я экспериментирую с добавлением вкладки для конкретного приложения в SurveyJS, которая изначально не поддерживается.До сих пор я добавил модель получателей, например:
import * as ko from "knockout";
export class RecipientsModel {
public firstName: string = 'Chris';
constructor() {}
public show() {}
}
и шаблон (receients.html):
<script type="text/html" id="recipients">
<div class="form-item form-type-textarea form-item-bulk-accounts">
<label class="control-label" for="edit-bulk-accounts">Email addresses <span class="form-required" title="This field is required.">*</span></label>
<div class="form-textarea-wrapper resizable textarea-processed resizable-textarea"><textarea class="form-control form-textarea required" id="edit-bulk-accounts" name="bulk_accounts" cols="60" rows="5"></textarea><div class="grippie"></div></div>
<div class="description">Email addresses for participants you would like to register. Enter one per line.</div>
</div>
<span data-bind="text: firstName">Test</span>
</script>
Я изменил editor.ts такчто показывает моя вкладка, и содержимое заполняется:
this.recipient = new RecipientsModel();
...
...
...
public showManageRecipients() {
if (!this.canSwitchViewType(null)) return;
this.recipient.firstName = 'Chris';
// this.showSurveyRecipients();
this.koViewType("recipients")
}
Итак, с тем, что у меня есть, у меня есть вкладка, которая показывает статический контент, который я хочу.Следующим шагом является выяснение привязки, которая в данный момент нарушена:
knockout-min.js:72 Uncaught ReferenceError: Unable to process binding "template: function(){return { name:'recipients'} }"
Message: Unable to process binding "text: function(){return firstName }"
Message: firstName is not defined
at text (eval at parseBindingsString (knockout-min.js:68), <anonymous>:3:57)
at update (knockout-min.js:98)
at function.a.B.i (knockout-min.js:72)
at Function.Pc (knockout-min.js:51)
at Function.Qc (knockout-min.js:51)
at Function.aa (knockout-min.js:50)
at Object.a.m.a.B (knockout-min.js:49)
at knockout-min.js:72
at Object.q (knockout-min.js:11)
at m (knockout-min.js:71)
Поскольку я впервые связываюсь с KnockoutJS или SurveyJS, я изо всех сил пытаюсь заставить эту простую привязку свойства работать.В настоящее время я просматриваю документацию KnockoutJS, но, опять же, я не уверен, что это правильный путь отладки.
EDIT После дополнительной отладки я обновил свою модель, чтобы установитьfirstName
до ko.observable
: firstName = ko.observable("");
.И в кодовой базе SurveyJs я установил его, используя this.recipient.firstName('Chris');
.Теперь я могу использовать: <span data-bind="text: recipient.firstName">Test</span>
, что OK - но я думаю, что я должен каким-то образом связать модель так, чтобы не требовалось recipient.firstName
, и я могу просто использовать firstName
.Может я не прав. END EDIT
Итак, мой главный вопрос на этом этапе: Как мне сделать привязку this.recipient.firstName в моем шаблоне?