更新 2
我让它工作了,为了解决这个问题,我只是更改了我的 var 名称,但现在我对它进行了 JSON 编码,它似乎一切正常。
谢谢
格伦。
更新
由于您的帖子,现在这种方法可以正常工作,但是就像我在评论中说的那样,我只能在控制台时输出我的数据。记录我的数据?
这样就可以了,
<script type="text/template" id="Template">
<% _.each(MyXX, function(MyXX) { %>
<%= console.log(MyXX.get('title')) %>
<%= console.log(MyXX.get('path')) %>
<%= console.log(MyXX.get('level')) %>
<% }); %>
</script>
但是当我这样做的时候,
<script type="text/template" id="Template">
<% _.each(MyXX, function(MyXX) { %>
<div> <%= MyXX.get('title') %> </div>
<div> <%= MyXX.get('path') %> </div>
<div> <%= MyXX.get('level') %></div>
<% }); %>
</script>
我的 BB 代码上没有显示任何内容。
格伦。
我有一个 PHP Slim 主干设置,我在这个阶段的每个阶段都问了很多问题,现在或多或少大部分都在工作。
但是我的下划线模板没有做正确的事情。我可以访问第一个“结果”,但比这更深的东西返回时未定义?
这是我的模板文件,
<script type="text/template" id="Template">
<% _.each(MyCol, function(MyBB) { %>
<%= console.log(MyCol.id) %>
<%= console.log(MyCol.level) %>
<% }); %>
</script>
所以这从模型中输出了 id,但是“level”或其他任何东西只是作为未定义的返回?当我刚刚输出 console.log(MyCol)
所有模型都显示正常时,选择模型的属性标签,显示所有数据都被传递到我的模板中,那么我哪里出错了?
这是加载到模板中的 BackBone View 设置,
var MyView = Backbone.View.extend({
el: '.page',
render: function() {
var that = this;
var MyCol = new CollectionSetOne();
MyMenu.fetch({
success: function(MyCol) {
var temp = _.template( $('#MenuTemplate').html(), {MyCol: MyCol.models} );
that.$el.html(menutemp);
//return this;
}
});
}
});
那么我哪里出错了?
其中大部分来自 YouTube 上的 Backbone.js 教程,https://www.youtube.com/watch?v=FZSjvWtUxYk
欢迎大家的帮助,
格伦。
最佳答案
这里有几个问题。首先是您指的是 MyCol
(您正在迭代的模型数组),而您应该指的是 MyBB
(特定模型):
<script type="text/template" id="Template">
<% _.each(MyCol, function(MyBB) { %>
Use MyBB in here, not MyCol...
<% }); %>
</script>
下一个问题是 Backbone 模型属性与 JavaScript 对象属性是一回事。您将属性称为:
obj.property
但是属性存储在model.attributes
中并使用 get
访问:
obj.get('attribute')
id
属性也存储在 id
property 中所以 model.id
将起作用。
您的模板应该看起来更像这样:
<script type="text/template" id="Template">
<% _.each(MyCol, function(MyBB) { %>
<% console.log(MyBB.id) %>
<% console.log(MyBB.get('level')) %>
<% }); %>
</script>
通常的惯例(也可能是您混淆的根源)是调用 toJSON
为 View 序列化集合:
var tmpl = _.template($('#MenuTemplate').html());
var html = tmpl({ MyCol: MyCol.toJSON() });
that.$el.html(html);
然后模板中的 MyCol
将是一个简单的对象数组,您可以说:
<% console.log(MyBB.id) %>
<% console.log(MyBB.level) %>
关于javascript - 我的 Underscore 模板没有加载/显示所有模型数据,但可以访问它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22866492/