标签: jsviews

jsRender和jsViews之间的区别

所以jQuery模板永远不会超过beta,jsRenderjsViews应该填补空白.我查看了Boris Moore此页面上发布的示例,但我没有区分jsRender和jsViews.此外,鲍里斯在另一个例子中使用了一个来增加混乱.所以问题是他们中的两个如何相关(或不同)?

javascript jquery jquery-templates jsrender jsviews

24
推荐指数
1
解决办法
7983
查看次数

JsViews如何在根对象及其嵌套属性上进行数据绑定?

当数据链接到一个表单导致我重新质疑究竟是什么数据绑定时,我遇到奇怪的行为?

基本上我有一个表单,可以创建新公司并更新它们.实际的创建/更新是通过ajax完成的,这就是我为同时使用相同表单的原因.在我必须创建公司的情况下,一切都按照我的预期运作.但是,当我必须更新公司时,事情并不像我期望的那样有效.请查看以下代码.

这是我的示例表单HTML:

<div id="result"></div>

<script type="text/x-jsrender" id="CompanyFormTemplate">
    <form>
        <input type="text" data-link="Company.Name" />
    </form>
</script>
Run Code Online (Sandbox Code Playgroud)

这是我的Javascript代码:

var app = new CompanyFormContext();

function CompanyFormContext() { 
    this.Company = {
        Name: ''
    };

    this.setCompany = function (company) {
        if (company) {
            $.observable(this).setProperty('Company', company);
        }
    };
};

$(function () {
    initPage(); 

    ...

    if (...) {
        // we need to update company information

        app.setCompany({ Name: 'Company ABC' });
    }
});

function initPage() {
    var template = $.templates('#CompanyFormTemplate');
    template.link("#result", app);
}
Run Code Online (Sandbox Code Playgroud)

它不是显示"公司ABC"的表单输入,而是空的.但是,如果我在其中输入任何内容,那么Company.Name值确实会发生变化!但是,虽然我希望数据输入绑定到我的Company对象的Name属性,但我也希望它知道对(父)Company对象所做的任何更改,并相应地更新它绑定到它的Name属性的数据.

所以我的问题是我应该如何改变我编写这段代码的方式,以便我可以在根对象和属性上实现数据绑定?

javascript jsviews

6
推荐指数
1
解决办法
355
查看次数

jsrender/jsviews:如何循环选定的对象列表?

如何仅从我的json数据循环选定的组/对象列表?例如,我只想在下面的例子中循环"ID2",

JSON,

 { 
"ID1": {
        "items":{
            "0": "VALUE1",
            "1": "VALUE2",
            "2": "VALUE3",
            "4": "VALUE4"
        }
    },
"ID2": { 
        "items": {
            "0": "VAL2-1",
            "1": "VAL2-2",
            "2": "VAL2-3"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

JS,

myTmpl2 = $.templates("#myTmpl2");
    $("#result2").html(
        myTmpl2.render(data2)
    );
Run Code Online (Sandbox Code Playgroud)

模板,

<script id="myTmpl2" type="text/x-jsrender">
{{props #data}}
    <tr>
            <td>{{:key}}</td>

                {{for prop}}
                    {{props items}}

                     <td>{{>key}} - {{>prop}}</td>

                    {{/props}}
                {{/for}}


            </tr>
{{/props}}
</script>
Run Code Online (Sandbox Code Playgroud)

结果,

ID1     0 - VALUE1  1 - VALUE2  2 - VALUE3  4 - VALUE4
ID2     0 - VAL2-1  1 - …
Run Code Online (Sandbox Code Playgroud)

jquery json jsrender jsviews jquery-1.9

4
推荐指数
1
解决办法
6225
查看次数

如何更改JsRender模板标签?

我用Twig.它使用这些标签:{{ name }}

我想在我的项目中包含JsRender.但是JsRender也使用相同的标签{{:name}},因此存在冲突并且没有任何作用.如何使用自定义标记更改默认的JsRender标记,比如类似Ruby<%= name %>

UPD:

出于某种原因,我无法使用控制流标记,for使用自定义标记的行为不符合预期.为什么会这样?

这是一个模板:

<script id="myTmpl" type="text/x-jsrender">
    <%!-- This is a copmment %>
    <% for data %>
        <%:key%>
    <% /for %>
</script>
Run Code Online (Sandbox Code Playgroud)

这是js代码:

var template = $.templates("#myTmpl");
var htmlOutput = template.render(data);
$(".div").html(htmlOutput);
Run Code Online (Sandbox Code Playgroud)

这是一个渲染结果:

<%!-- This is a copmment %> <% for data %> <% /for %>
Run Code Online (Sandbox Code Playgroud)

jsrender jsviews

3
推荐指数
1
解决办法
1166
查看次数

jsViews - 如何从数据中设置所选选项

我有一个select使用jsViews绑定到服务器的某些值.我已成功设法显示选项,但我希望能够跟踪并将select选项设置为我的JavaScript对象中的值.这是我的代码:

<select id="albumChoice" data-link="selectedAlbum">
    <option value="-">Please select</option>
    {^{for albums}}
    <option data-link="{value{:id} text{:name}} selected{:selectedAlbum}}"></option>
    {{/for}}
</select>
Run Code Online (Sandbox Code Playgroud)

完整的示例代码就在这个小提琴中:http://jsfiddle.net/4ZevT/

正如您所看到的,我尝试使用选定的{:selectedAlbum},但这并没有做任何事情.我必须做什么,以便在页面加载到服务器的值时自动设置该选项.

jsrender jsviews

1
推荐指数
1
解决办法
2726
查看次数