Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从emberjs Handlebar应用程序获取干净的HTML_Javascript_Ember.js_Handlebars.js - Fatal编程技术网

Javascript 从emberjs Handlebar应用程序获取干净的HTML

Javascript 从emberjs Handlebar应用程序获取干净的HTML,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,我一直在Ember.js中构建一个HTML(电子邮件/页面)合成工具,作为一种让我头脑清醒的方法,我想这是一种WYSIWYG 用户添加具有不同值的各种对象(链接、文本等),这些对象可以具有不同的模板,并使用jqueryui进行排列,jqueryui将反馈给控制器。用户在屏幕上看到的实际上是即时的,我目前正在保存并从localstorage重新加载干净的JSON,作为一种持久性方法 但我真正想做的是,能够生成用户所看到的内容的干净HTML版本。要么来自写入前端应用程序的内容,要么通过在服务器端处理

我一直在Ember.js中构建一个HTML(电子邮件/页面)合成工具,作为一种让我头脑清醒的方法,我想这是一种WYSIWYG

用户添加具有不同值的各种对象(链接、文本等),这些对象可以具有不同的模板,并使用jqueryui进行排列,jqueryui将反馈给控制器。用户在屏幕上看到的实际上是即时的,我目前正在保存并从localstorage重新加载干净的JSON,作为一种持久性方法

但我真正想做的是,能够生成用户所看到的内容的干净HTML版本。要么来自写入前端应用程序的内容,要么通过在服务器端处理我导出的JSON

我希望尽可能多地使用JS、Ember和Handlebar,最好不要在不同的地方重新实现太多的模板/代码

下面是渲染输出中的“行”示例

.行控件由全局编辑器切换开关打开和关闭

<script id="metamorph-11-start" type="text/x-placeholder"></script>
  <div id="ember507" class="ember-view template-row ui-droppable">
    <ul id="ember524" class="ember-view row-controls">
      <li class="dragger"><a href="#">drag</a></li>
      <li class="type"><a href="#" data-ember-action="19">type</a></li>
      <li class="edit"><a href="#" data-ember-action="20">edit</a></li>
      <li class="delete"><a href="#" data-ember-action="21">delete</a></li>
    </ul>
    <script id="metamorph-12-start" type="text/x-placeholder"></script>
    <script id="metamorph-13-start" type="text/x-placeholder"></script>
      <h2><a href="http://foo.com/bar" data-bindattr-34="34">
        <script id="metamorph-19-start" type="text/x-placeholder"></script>
          Link title text
        <script id="metamorph-19-end" type="text/x-placeholder"></script>
      </a></h2>
      <img src="http://foo.com/image.png" data-bindattr-35="35">
      <script id="metamorph-20-start" type="text/x-placeholder"></script>
        Teaser/synopsis
      <script id="metamorph-20-end" type="text/x-placeholder"></script>
      <a href="http://foo.com/bar" data-bindattr-36="36">Read more</a>
    <script id="metamorph-13-end" type="text/x-placeholder"></script>
    <script id="metamorph-12-end" type="text/x-placeholder"></script>
  </div>
<script id="metamorph-11-end" type="text/x-placeholder"></script>

摘要/概要
我想这似乎是一件奇怪的事情,实际应用有限,但我想现在就完成它。我已经开始:)而且,我认为任何答案中涉及的原则可能有不同的应用,我只是还没有想到

谢谢!感谢这里的其他人回答了我之前关于余烬的几个问题

编辑

说清楚点,我说的是这样的输出

<h2><a href="http://foo.com/bar">Link title text</a></h2>
<img src="http://foo.com/image.png">
Teaser/synopsis
<a href="http://foo.com/bar">Read more</a>

摘要/概要
解决方案编辑

如果有人找到这个链接,我已经在属性循环中添加了一个属性检查(到我的标准JS版本中)

<script>
// ...
return $.each($this[0].attributes, function(index, attr) {
  // this bit added
  if(!attr) {
    return;
  }
  if (attr.name.indexOf('data-bindattr') === -1) {
    return;
  }
  // ...
</script>

// ...
返回$.each($this[0]。属性,函数(索引,属性){
//这一点增加了
如果(!attr){
回来
}
if(attr.name.indexOf('data-bindattr')=-1){
回来
}
// ...
这可能是我编写的其他一些代码中的错误,但jQuery在循环中以attr的形式传递“undefined”。jQuery似乎想解析整个函数,所以我无法准确地调试这是什么。不过,检查目前似乎对我有效。
恐怕不知道如何将其纳入特定的原始coffeescript文件中。

CodeBrief中的ghempton在这篇很棒的帖子中谈到了这一点:

检查提示7。 把它们都读一遍,这是值得的


顺便说一句,它在coffeescript的帖子中,如果你需要获得JS版本,请转到“尝试coffeescript”选项卡并转换它!

CodeBrief的甘普顿在这篇很棒的帖子中谈到了它:

检查提示7。 把它们都读一遍,这是值得的


顺便说一下,这篇文章在coffeescript上,如果你需要获得JS版本,请转到“尝试coffeescript”选项卡并转换它!

谢谢Luan。我不久前在我的钉板上添加了这篇文章,但没有回忆起这段代码。我原本想尝试使用alernate呈现过程,而不是解析元素,但当你看到它时,我发现了它就像这样,这是一个比我所想的方法更优雅的解决方案。谢谢Luan。我不久前在我的钉板上添加了那篇文章,但不记得那一段。我最初试图考虑的是alernate呈现过程,而不是解析元素,但当你看到它这样写的时候,这是一个比其他方法更优雅的解决方案我正在考虑的方法。