具有预加载值的双向绑定

时间:2015-10-02 11:17:49

标签: javascript ractivejs

我在pyramid / jinja2项目中使用ractivejs,我想知道,如果可以对输入元素进行ractive双向绑定,并且初始值加载了服务器端模板。

例如,我有这个元素:

<input name="name">

如果我为jinja2(服务器端)模板使用{{}}分隔符,并为ractivejs使用[[]]分隔符,我可以这样做

<!-- This will have initial value taken from server,
     but with no binding to ractivejs -->
<input name="name" value="{{ name }}">

或:

<!-- This will be two-way binded with ractivejs data,
     but it's initial value needs to be defined in javascript -->
<input name="name" value="[[ name ]]">

现在我想做的是加入这两种情况:输入绑定ractivejs数据,但从服务器端模板获取初始值。

如果不创建&lt;脚本&gt;服务器端模板中的标签?

编辑:

目前,我只是复制输入,第二个副本是双向绑定和隐藏,可见副本是只读的(如果我需要编辑,我会交换它们。)

我想我可以编写一个设置初始值的装饰器,但是当我需要一个真正的&#34;时它仍会产生问题。装饰者(比方说,使用select2插件)

1 个答案:

答案 0 :(得分:1)

我不熟悉jinja2,但尝试使用Ractive双向绑定并使用jinja2来&#34; bind&#34;服务器端值到Ractive数据定义。

<div id="output"></div>
<script id="template" type="text/html">
    <input name="name" value="[[ name ]]">
</script>
<script type="text/javascript">
    new Ractive({
        template: "#template",
        el: "#output",
        delimiters: [ '[[', ']]' ],
        data: {
            name: "{{ name }}"   // the 'name' value from jinja2 gets copied to Ractive
        }
    });
</script>