更新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视图设置,
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
欢迎大家帮忙,
格伦。
答案 0 :(得分:3)
这里有几个问题。第一个是您指的是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
来序列化视图的集合:
var tmpl = _.template($('#MenuTemplate').html());
var html = tmpl({ MyCol: MyCol.toJSON() });
that.$el.html(html);
然后模板中的MyCol
将是一个简单的对象数组,您可以说:
<% console.log(MyBB.id) %>
<% console.log(MyBB.level) %>