0
一般的なカスタマイズ可能なモーダルを描画するために部分を設定します。 {{> myModal }}
。Handlebars HelperからHandlebars Partialにパラメータとして返されたJSONを渡します。
オブジェクトを送信することによって、呼び出し側のビューからモーダルをカスタマイズしたいと考えています。
ここで推奨されているように、私はアプローチを試してみました:ここPassing an array of objects to a partial - handlebars.js
は、部分的に呼び出すビュー内からの私のコードです:ここでは
{{# getJsonContext '
{
"id": "deleteModal",
"title": "Are you sure?",
"formId": "delete-form",
"body": "Press Yes to delete this record. Press No to cancel."
}
'}}
{{> myModal this }}
{{/ getJsonContext }}
は私のヘルパーです:
getJsonContext: function(data, options) {
console.log(data); <-- The result is correct.
let jsonReturn = JSON.parse(data);
console.log(jsonReturn.title); <-- The result is correct.
return jsonReturn;
},
こちらは私の一部です:
<div class="modal fade" id="{{ id }}">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header bg-light">
<h4 class="modal-title">{{ title }}</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<!-- Form -->
<form id="{{ formId }}" method="post">
<!-- Modal body -->
<div class="modal-body">
{{ body }}
</div>
<!-- Modal footer -->
<div class="modal-footer rounded-bottom bg-light">
</div>
</form>
</div>
</div>
</div>
私は、カスタマイズされたモーダルを部分表示で表示することを期待しています。
部分がまったくレンダリングされていないようです。ブラウザで「ページソースを表示」すると、部分的にすべての部分の代わりに<html>
、それはすべて[object Object]
です。
私はヘルパーの外{{> myModal this}}
を置く場合は、「ページのソースを表示」は、ID、タイトル、当然すべてのモーダルの<html>,
を示したが、フォームIDと体はすべて(ヌル)空白です。
あなたが参照した答えの中の 'getJsonContext'ヘルパーをもう一度見てください。この例のreturn options.fn(JSON.parse(data));と、あなたのreturn文の間には非常に大きな違いがあります。 – 76484