2012-11-09 16 views
1

首先對信息服務器渲染的數據,也就是從服務器我的迴應如何從與Backbone.js的

$response = array(); 
      $i = 0; 
      while($result = mysql_fetch_assoc($query)){ 
       $response[$i]["id"]    = $result["ID"]; 
       $response[$i]["post_date"]  = $result["post_date"]; 
       $response[$i]["post_content"] = $result["post_content"]; 
       $response[$i]["nickname"]  = $result["nickname"]; 
       $i++; 
      } 
      echo json_encode($response); 

似乎@ k33g_org方式的工作,但現在安慰說我Uncaught ReferenceError: nickname is not defined

我的模板是

<script type="text/template" id="tplhome_post_list"> 
      <div class="post"> 
       <div class="view"> 
        <p class="header_post"> 
         <%= nickname %> - Le <%= post_date %> 
        </p> 
        <div class="statut"> 
         <div class="like"> 
          8 
         </div> 
         <div class="reply"> 
          25 
         </div>       
        </div> 
        <p class="clear"> 
         <%= post_content %> 
        </p> 
       </div> 
      </div> 
     </script> 

如何解決?定義模板值?

+0

我試過我編輯過的。 – akio

回答

0

你必須寫取這樣的:

Posts.fetch({ 
    success:function(data) { 
     /* when you get data from server request data variable is populated */ 
     /* then you can call render() method of the view */ 
    }, 
    error : function(err) { 
     throw "Houston we've got a problem..."; 
    } 
}); 

您可以將數據傳遞給渲染方法(像這樣)

render : function(data) { 
     var renderedContent = this.template(this.data.toJSON()); 
     $(this.el).html(renderedContent); 
     return this; 
    } 

或者,更好的,你可以綁定集合的重置事件到視圖中,在initialize方法的視圖中,把這個視爲:

_.bindAll(this, 'render'); 
this.collection.bind('change', this.render); 
this.collection.bind('add', this.render); 
this.collection.bind('remove', this.render); 

那麼當收藏內容發生變化時(例如,在獲取時),render()被稱爲