更新2
我可以使用它,但为了解决这个问题,我只是更改了var名称,但是现在我对其进行JSON编码,而且一切似乎都可以正常工作。
谢谢
格伦
更新
这种工作现在要感谢您的帖子,但是就像我在评论中说的那样,我只能在console.log数据时输出数据?
所以这个可行,
<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,但是“级别”或其他任何内容只是作为未定义返回?当我只输出
console.log(MyCol)
时,所有模型都显示良好,选择模型的attribute标签,显示所有数据都正在传递到我的模板中,那我要怎么做呢?这是要加载到模板中的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
所有帮助都非常欢迎,
格伦
最佳答案
你这里有几个问题。首先是您要引用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) %>
关于javascript - 我的Underscore模板不会加载/显示所有模型数据,但是可以访问吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22866492/