首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsviews表动态列

jsviews表动态列
EN

Stack Overflow用户
提问于 2014-07-27 15:12:39
回答 1查看 191关注 0票数 0

我正在尝试创建一个具有列数组的表,以允许显示哪些列,但是我希望能够使用link,但是像下面那样使用它并不能使用obeservable进行更新。

我目前所做的是首先基于columns集合生成一个模板,然后使用该模板生成表。

所以我想知道有没有一种方法可以在单个模板中做到这一点?

代码语言:javascript
复制
<table id="test"><tbody></tbody></table>
<script>
    var columns = [{field:"Id"}, {field:"Name"}];
    var data = {rows:[{Id:1, Name:"a", Bla:"bla"},{Id:2, Name:"b", Bla:"bla"}]};
    var tmpl = "{^{for rows}}<tr>{^{for ~columns}}<td>{^{:#parent.parent.data[field]}}</td>{{/for}}</tr>{{/for}}";

    $.templates(tmpl).link("#test tbody", data, { columns: columns });

    var d = $.view($("#test tbody tr")[0]).data;
    $.observable(d).setProperty("Name", "c");
</script>
EN

回答 1

Stack Overflow用户

发布于 2014-08-01 09:33:44

以下是您可以使用的一种方法:

代码语言:javascript
复制
<table id="test"><tbody></tbody></table>

<script type="text/x-jsrender" id="tmpl">
    {^{for rows}}
        <tr>
            {^{props}}
                {{if ~inColumns(key)}}
                    <td>{^{:prop}}</td>
                    <td><input data-link="prop"/></td>
                {{/if}}
            {{/props}}
        </tr>
    {{/for}}
</script>

<script>
    var columns = ["Id", "Name"];

    var data = {
        rows:[{Id:1, Name:"a", Bla:"bla"},{Id:2, Name:"b", Bla:"bla"}]
    };

    $.templates("#tmpl").link("#test tbody", data, {
        inColumns: function(key) {
            return $.inArray(key, columns) !== -1;
        } 
    });

    var d = $.view($("#test tbody tr")[0]).data;

    $.observable(d).setProperty("Name", "c");
</script>

在下一次更新中,将有一个新的DataMaps功能,它将提供另一种方法。一旦答案可用,我可能会更新这个答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24978739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档