首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jTemplates (jQuery插件)-更新行数据

jTemplates (jQuery插件)-更新行数据
EN

Stack Overflow用户
提问于 2011-11-08 11:09:13
回答 3查看 878关注 0票数 0

假设我有一个像这样的jTemplate,它遍历对象的列表:

代码语言:javascript
复制
{#template MAIN}
    {#foreach $T.Results as result}
        {#include content root=$T.result}
    {#/for}
{#/template MAIN}

{#template content}
    <div>
        <span>ID : {$T.result.id}</span>
        <span>Name : {$T.result.name}</span>
        <span>Price : {$T.result.price}</span>
        <button onclick="update(this);"><span>Edit</span></button>
        <!-- Opens modal form to edit data -->
    </div>
{#/template content}

在用户更改了特定行的数据后,如何在不呈现整个模板的情况下更新行?

我想在这里实现的是使用AJAX调用db来检索受影响行的最新数据。并且只重新呈现该行,而不是重新加载整个页面。希望我的问题是清楚的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-22 10:25:57

好的,这就是我想出来的..

代码语言:javascript
复制
var templates = $.createTemplate($('#MyTemplates').html())._templates; 
// Find the DIV to render 
var $target = $('#content_' + data.d.ContentId).parent("div");  
$target.setTemplate(templates['content']);   
$target.processTemplate(data.d); 

这可能不是最好的解决方案,但它是有效的。如果你对此有更清晰的解决方案,请发帖子。谢谢;)

票数 0
EN

Stack Overflow用户

发布于 2011-11-22 11:19:37

数据绑定将是另一种选择。

当模型更新时,KnockoutJs会自动更新有问题的“内容”。

您仍然需要确定更新并识别模型中的行,但Knockout将再次重新呈现整个模板。

票数 0
EN

Stack Overflow用户

发布于 2012-04-07 13:05:52

我有一个类似的要求,即在添加新记录时更新内容。我认为问题出在$("#TemplateResultsTable2").html();在模板执行后变为空。因此,我所做的工作是将模板存储在全局变量中,然后重用该变量来呈现新模板。

代码语言:javascript
复制
<script type="text/javascript">
var t = null;
var template_render = function(content) {
    content = $.parseJSON(content);
    var data = {
        table:content
    }                
    var x = $("#TemplateResultsTable2").html();
    // console.log(x);
    //console.log(data);
    $('div#table-jtemplates').setTemplate(x);    
    $('div#table-jtemplates').processTemplate(data);          
}

//View attribute
var view = function(){
    $.ajax({            
        url: 'viewattributes',
        type:"POST",
        success: function(content) {
            t = $("#TemplateResultsTable2").html();
            template_render(content);            
        }    
    })
}

var add = function(x){      
    $.ajax({            
        url: 'addattributes',
        type:"POST",
        success: function(content) {     
            content = $.parseJSON(content);
            var data = {
                table:content
            }                
            //  var x = $("#TemplateResultsTable2").html();
            $('div#table-jtemplates').setTemplate(x);    
            $('div#table-jtemplates').processTemplate(data);     
        }            
    })      
}

var remove = function(){
    $.ajax({            
        url: 'removeattributes',
        data:{id:"1"},
        type:"POST",
        success: function(content) {
            alert(content);
            content = $.parseJSON(content);
            var data = {
                table:content
            }                
            //  var x = $("#TemplateResultsTable2").html();
            $('div#table-jtemplates').setTemplate(x);    
            $('div#table-jtemplates').processTemplate(data);     
        }
    })
}

//view
$(document).ready(function(){
    $("#save").live("click",function(){
        var tmpl = $("#TemplateResultsTable2").html();
        add(t);
    })
})
view();
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8045497

复制
相关文章

相似问题

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