Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
在Jade和Javascript之间共享布局信息_Javascript_Jquery_Node.js_Pug - Fatal编程技术网

在Jade和Javascript之间共享布局信息

在Jade和Javascript之间共享布局信息,javascript,jquery,node.js,pug,Javascript,Jquery,Node.js,Pug,我有一个基于Node.js/Jade的站点,我正试图通过一些简单的Javascript代码来增加一些交互性 特别是,我试图设置一个按钮,将新行添加到表中。 表呈现目前是在Jade中完成的,我计划使用JQuery设置回调以添加行 我的模板看起来像: tbody#my_body - each foo in foos tr td= foo.blah td= foo.hello td a( ... complex link stuff et

我有一个基于Node.js/Jade的站点,我正试图通过一些简单的Javascript代码来增加一些交互性

特别是,我试图设置一个按钮,将新行添加到表中。 表呈现目前是在Jade中完成的,我计划使用JQuery设置回调以添加行

我的模板看起来像:

tbody#my_body
  - each foo in foos
    tr
      td= foo.blah
      td= foo.hello
      td
        a( ... complex link stuff etc. )
我想我的JS回调会

$("a#add_row").click(function(){
  $("#my_body").append( ??? );
});
我可以在
append
正文中用HTML重写整个布局,但这似乎很愚蠢。每次我换一个,我就得换另一个


有没有办法在Jade模板和Javascript之间共享布局代码?

我的意思是,在编写视图时,您可以访问服务器端变量。您还可以将模型/变量转储到json并使用它。最后,您可以查看Backbone.js并在客户机/服务器上重用相同的模型。请参阅。

因此。。。我想我不完全理解你的要求。您希望表在会话之间是静态的,还是仅在单个会话或刷新的上下文中

如果是后者,则只需通过jquery添加表行,就像添加一个完整html的站点一样。当您调用jquery函数时,express已经将jade模板呈现为完整的html


如果希望该行保持不变,则需要包括对服务器的调用,该调用将新行的数据添加到foo的数据收集中,然后每当页面再次呈现时,服务器都会将foo与前面的所有行+刚才添加的行一起传递回去。

我在第一次设计应用程序时考虑了主干。不幸的是,它更像是一个传统的网站,而不是一个单页高度动态的应用程序。因此,当编辑模型中的内容时,一种交互式的方法会很好,但目前90%的内容非常适合Express。不过,我不确定是否有一种很好的方法可以同时兼顾这两个方面。谢谢你的建议:)@BenHumphreys明白了,我想我有点不明白你说的在模板和JS之间共享代码是什么意思。考虑到现在的情况,我想我会更好地理解你的建议。我可以将表行呈现内容抽象为一个部分,然后呈现空部分,并将其作为静态文本放到Javascript中的某个地方?现在我要做的就是想办法。对不起,我应该澄清一下。我想知道是否有办法让jQuery检索Jade模板的一部分。例如,如果我有一个mixin来渲染每一行,那么jQuery和服务器端渲染代码都可以使用它。目前,我刚刚复制了渲染输出并将其放入Javascript回调中。我认为TJ的finance应用程序可能会给您一个良好的开端,请查看。或者他的。这就是你想要完成的事情吗?您不会使用append(),而是将数据传回服务器,让它呈现包含表的最新更新的jade部分。你只需要像那样来回移动,而不只是在客户端渲染。所以会被调用并按照上面所说的做?这意味着服务器每次都要做一些工作,但从长远来看,这可能是值得的。人们不会编辑那么多。大概谢谢你的主意!确切地说,一般来说,如果人们正在向客户端添加任何内容,那么无论如何,您都希望将其添加到某种数据存储中,因此您最好将其发送回服务器,让它再次渲染部分内容。除此之外,您还可以使服务器和客户端与所有更改保持同步,从而实现更实时的功能:)