2011-11-08 9 views
0

は、オブジェクトのリストスルー反復処理することを、私はこのようなjTemplateを持っていると言いますユーザーが特定の行のデータを変更しましたか?jTemplates(jQueryのプラグイン)の更新行データ

私がここで達成したいのは、影響を受ける行の最新データを取得するためにAJAXを使用してdbを呼び出すことです。ページ全体をリロードするのではなく、その行だけを再描画します。私の質問ははっきりしていると思う。

答えて

0

[OK]を、ので、これは私はこれが最善の解決策ではないかもしれないが、それは動作します。..

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

データバインドが他の方法です。

KnockoutJsは、モデルが更新されたときに問題の「コンテンツ」を自動的に更新します。

更新を決定してモデルの行を特定する必要がありますが、Knockoutは過去のテンプレート全体を再描画する必要があります。

+0

knockoutJsは、(私のpoiont of view)が別のライブラリに切り替えるのがベストではなく、使用している特定の機能を使用しているものではありません。しかし、最善の方法は、既存のライブラリを試して拡張することです。 –

0

新しいレコードが追加されたときにコンテンツを更新するための同様の要件がありました。テンプレートが実行された後に問題が$("#TemplateResultsTable2").html();であるとわかりました。だから、私がやってきたのは、テンプレートをグローバル変数に格納し、それを再利用して新しいテンプレートをレンダリングすることでした。

<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> 
関連する問題