Javascript 无法迭代集合以在主干应用程序中呈现它

Javascript 无法迭代集合以在主干应用程序中呈现它,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,在我不断的自我思考过程中,通过构建,我找到了解决问题的方法,并遇到了新的问题 现在成功地从第一个视图路由到第二个视图,页面由新的html视图填充 成功地从第二个视图将新帖子保存到db,这是一个用于添加新帖子的表单 但在第一个视图中,我无法查看保存的帖子,事实上,它们的标题已列出 Js控制台错误消息为 [Error]TypeError:undefined不是计算“this.template2each”的函数 匿名函数app.js,第34行 forEach[本机代码],第0行 forEach下划线-

在我不断的自我思考过程中,通过构建,我找到了解决问题的方法,并遇到了新的问题

现在成功地从第一个视图路由到第二个视图,页面由新的html视图填充

成功地从第二个视图将新帖子保存到db,这是一个用于添加新帖子的表单

但在第一个视图中,我无法查看保存的帖子,事实上,它们的标题已列出

Js控制台错误消息为

[Error]TypeError:undefined不是计算“this.template2each”的函数 匿名函数app.js,第34行 forEach[本机代码],第0行 forEach下划线-min.js,第5行 匿名函数主干-min.js,第1行 renderPostsListItem app.js,第33行 f主干-min.js,第1行 触发器主干-min.js,第1行 _onModelEvent backbone-min.js,第1行 f主干-min.js,第1行 触发器主干-min.js,第1行 设置主干-min.js,第1行 success主干网-min.js,第1行 jquery.min.js,第2行 fireWith jquery.min.js,第2行 x jquery.min.js,第4行 匿名函数jquery.min.js,第4行

但是我在视图定义中编译了这个模板。通过在render函数中使用alertthis.collection.length从我知道的数据库中获取集合,并生成2,这是正确的

那么,我的template2函数有什么问题呢

此视图中使用的html模板包括:

<!--Post Templates-->
    <script type="text/template" id="postsListTemplate">
        <h1>Blog</h1>
        <h2>All Posts</h2>

        <ul>aaa</ul>
        <p><a href="/posts/postform">Add New Post</a></p>
    </script>

    <script type="text/template" id="postsListItemTemplate">
        <li>{{title}}</li>
    </script>
    var postModel = Backbone.Model.extend({});

var postsCollection = Backbone.Collection.extend({
    model: postModel,
    url: "/posts"
});
此视图中使用的模型和集合为:

<!--Post Templates-->
    <script type="text/template" id="postsListTemplate">
        <h1>Blog</h1>
        <h2>All Posts</h2>

        <ul>aaa</ul>
        <p><a href="/posts/postform">Add New Post</a></p>
    </script>

    <script type="text/template" id="postsListItemTemplate">
        <li>{{title}}</li>
    </script>
    var postModel = Backbone.Model.extend({});

var postsCollection = Backbone.Collection.extend({
    model: postModel,
    url: "/posts"
});

可能,this.template中的这个引用了其他对象窗口。看起来您是对的。我已将函数更改为this.collection.forEachfunctioneach{$this.ul.append this.template2each;},this;。错误已经过去,另一个错误又来了。js控制台现在显示引用错误:找不到变量title,这是template2中的模板变量。现在所有操作都完成了。感谢您在forEach中提及上下文。现在我已经修改了inline this.template2each.toJSON,忘记了toJSON。我们中的一个人应该在回答问题时总结这两个解决方案步骤。当我从postformview返回按钮返回postslistview(即第一页)时,集合没有呈现,这是在postslistview初始化时获取的,原因是什么?在第一次加载第一个视图页面时,它被抓取并呈现。在第二个视图中放置的链接路由到第一个视图的url时也是如此。