2017-12-10 13 views
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">&times;</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と体はすべて(ヌル)空白です。

+0

あなたが参照した答えの中の 'getJsonContext'ヘルパーをもう一度見てください。この例のreturn options.fn(JSON.parse(data));と、あなたのreturn文の間には非常に大きな違いがあります。 – 76484

答えて

関連する問題