gpt4 book ai didi

javascript - Backbone 和下划线 - 模板化一个简单的 View

转载 作者:行者123 更新时间:2023-11-30 13:05:04 25 4
gpt4 key购买 nike

我在 Backbone 和下划线中的第一个模板化 View 并不太走运。

我从 Underscore 库中收到“玩家未定义错误”。

这是我的模型:

define([
'domLib',
'underscore',
'backbone',
'router'
],
function($, _, Backbone, Router) {

var PlayerModel = Backbone.Model.extend({
defaults: {
username: '',
rank: 0,
score: 0
}
});

return PlayerModel;

});

这是我的收藏:

define([
'domLib',
'underscore',
'backbone',
'router',
'model/player'
],
function($, _, Backbone, Router, PlayerModel) {

var LeaderboardCollection = Backbone.Collection.extend({
model: PlayerModel,
url: '/hyc-web/leaderBoard/topOverall?count=5'
});

return LeaderboardCollection;
});

关联 View :

define([
'domLib',
'underscore',
'backbone',
'router',
'collection/leaderboard',
'text!template/leaderboard.html'
],
function($, _, Backbone, Router, LeaderboardCollection, LeaderboardTemplate) {

var LeaderboardView = Backbone.View.extend({
el: '#leaderboard',
template: _.template(LeaderboardTemplate),
initialize: function(){
this.collection = new LeaderboardCollection();
this.collection.on('reset', this.render, this);
this.collection.fetch();
},
render: function(){
console.log(this.collection.models);
this.$el.html(this.template, {players: this.collection.models});
}
});

return LeaderboardView;
});

以及模板本身:

<table class="table table-bordered">
<thead>
<tr>
<td>Rank</td>
<td>Player</td>
<td>Score</td>
</tr>
</thead>
<tfoot>
<!-- Logged in user details here -->
</tfoot>
<tbody>
<% _.each(players, function(player){ %>
<tr>
<td><%= player.rank %></td>
<td><%= player.username %></td>
<td><%= player.highScore %></td>
</tr>
<% }); %>
</tbody>
</table>

一切都很顺利,直到我尝试连接到实际的数据服务层。我不明白为什么这不是模板化 JSON 数组?

最佳答案

您可能希望您的渲染方法看起来更像:

render: function() {
this.$el.html(this.template({ players: this.collection.toJSON() });
}

您需要通过 View 的 template() 函数而不是 jQuery html() 函数传递数据上下文。此外,您希望使用 collection.toJSON() 将集合转换为 JSON,而不是使用 collection.models 传入原始模型数组。

关于javascript - Backbone 和下划线 - 模板化一个简单的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15999767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com