[英]How to Render Data from server with backbone.js
First for information, that is my response from server 首先供参考,这是我从服务器得到的答复
$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);
it seems that @k33g_org way does work but now console say me Uncaught ReferenceError: nickname is not defined
似乎@ k33g_org方式确实有效,但是现在控制台说我
Uncaught ReferenceError: nickname is not defined
my template is 我的模板是
<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>
how can fix it ?? 如何解决呢? define template value ??
定义模板值
you have to write fetch like this : 你必须这样写fetch:
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...";
}
});
You can pass data to render method (something like this) 您可以将数据传递给render方法(类似这样)
render : function(data) {
var renderedContent = this.template(this.data.toJSON());
$(this.el).html(renderedContent);
return this;
}
Or, better, you can bind reset event of the collection to the view, in the initialize
method of the view, put this : 或者,更好的是,您可以将集合的reset事件绑定到视图,在视图的
initialize
方法中输入以下内容:
_.bindAll(this, 'render');
this.collection.bind('change', this.render);
this.collection.bind('add', this.render);
this.collection.bind('remove', this.render);
then when collection content change (ie when fetching), render()
is called 然后,当集合内容发生更改时(即,获取时),
render()
调用render()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.