php - 如何使用backbone.js从服务器渲染数据

标签 php javascript 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:昵称未定义

我的模板是

<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>

如何解决?定义模板值??

最佳答案

你必须像这样编写 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...";
    }
});

您可以将数据传递给渲染方法(类似这样)

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

或者,更好的是,您可以将集合的重置事件绑定(bind)到 View ,在 View 的 initialize 方法中,输入:

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

然后当集合内容改变时(即获取时),调用render()

关于php - 如何使用backbone.js从服务器渲染数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13305865/

相关文章:

javascript - 在同一张 table 上将图像从一个 <td> 移动到另一个 <td>

javascript - Web套接字服务器的单元测试需要在浏览器中打开网页

javascript - 如何在 google 表格中使用 javascript 数组?

php - 如何正确使用 DISTINCT 为每个 user_id 仅显示一项

PHP MusicBrainz 获得第一个发布日期

javascript - 如何将我的 Mustache/Handlebars 模板存储在单独的文件中?

javascript - MySQL 和 View 的日期/时间格式化的正确方法,反之亦然

javascript - 如何使从 cordova-plugin-file-transfer 上传的函数返回一个 promise

php - 异步数据加载后获取网页来源

javascript - 使用 array.filter 在 Vue 应用程序中过滤控制 v-for 的数组使用相等但不是 RegExp