Hogen.js - 用JS加载嵌套模板

时间:2018-03-21 19:31:28

标签: javascript templates laravel-5 mustache hogan.js

我有一个帖子模板(Hogen.js)我将数据(来自Laravel 5.3的api调用)加载到其中。
我设法正确加载,编译和渲染模板和数据。

问题:
我有jquery / vanilla js脚本需要使用模板和数据,但不知何故,这个JS被渲染模板完全忽略,它不起作用(onClick,其他ajax调用等)。

我的加载/渲染JS:

var downloadUri = ConfigurationManager.AppSettings["DownloadUri"];

FtpWebRequest FTPRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://" 
+ "user123" +
":" + "p@ssword" + "@" + downloadUri);

我的模板:

  var $page = 1;
var source   = $("#postTemplate").html();
var template = Hogan.compile(source);
$.ajax({
   url: '/api/postings',
   data: { page: $page} ,
   type: 'POST',
   success: function(data) {
        var output = template.render(data);
        $('.posts-container').prepend(output);
   }
});  

我在laravel中包含了部分需要执行的“注释”代码(fadeIn,ajaxacalls,submit等)

是否有可能,我不能用新渲染的模板或DOM执行我的JS,因为它在document.ready中不可用?

我是否需要切换模板引擎?还有其他方法让这项工作?

JSON:

<script id="postTemplate" type="text/x-hogan-template">
        @{{#posts.data}} 
        <div class="post">
            <div class="image">
                <img src="@{{ imageURL }}" alt="post image" />
            </div>

            <div class="info">
                <div class="like-count" data-like-id="@{{ id }}">
                    more html
                </div>
            </div>
            @include('partials.comments')
        </div>
        @{{/posts.data}}
</script> 

我把它剥了一下!

1 个答案:

答案 0 :(得分:0)

你不能使用

   @include('partials.comments')
你的hgan.js模板中的

。霍根(几乎)没有逻辑。它用于将JSON绑定到HTML模板,它不能或不打算用于此用途。

部分只能像下面一样使用:

  var partialText = "normal text but can use {{foo}} is from a variable";
  var p = Hogan.compile(partialText);

  var text = "This template contains a partial ({{>partial}})."
  var t = Hogan.compile(text);

  var s = t.render({foo: chickens}, {partial: p});
  is(s, "This template contains a partial (normal text but we can use chickens. is a variable).", "partials work");

基本上{{&gt; partial}}可用于嵌套另一个预编译模板。