Backbone.js 主干JS创建动态视图和集合
我有点笨 我有一个代码,其中我需要根据json列出类别,并在页面上列出它们。 现在,当用户单击任何类别列表时,将从服务器获取附加到该类别的新JSON并在页面上列出 我的问题是,我已经列出了类别,但不知道如何获取新的JSON,并通过根据所选类别动态创建新JSON的视图和集合在屏幕上显示它 这是我的HTML代码Backbone.js 主干JS创建动态视图和集合,backbone.js,backbone-views,backbone-events,backbone-routing,underscore.js-templating,Backbone.js,Backbone Views,Backbone Events,Backbone Routing,Underscore.js Templating,我有点笨 我有一个代码,其中我需要根据json列出类别,并在页面上列出它们。 现在,当用户单击任何类别列表时,将从服务器获取附加到该类别的新JSON并在页面上列出 我的问题是,我已经列出了类别,但不知道如何获取新的JSON,并通过根据所选类别动态创建新JSON的视图和集合在屏幕上显示它 这是我的HTML代码 类别列表 类别列表 var分类; var Category=Backbone.Model.extend(); var CategoryCollection=Backbone.Collec
类别列表
类别列表
var分类;
var Category=Backbone.Model.extend();
var CategoryCollection=Backbone.Collection.extend({
型号:类别,
url:'categories.json',
解析:函数(响应){
categoryJSON=响应;
log(categoryJSON)
返回响应;
}
});
var CategoryAbout=Backbone.View.extend({
el:“.categoryList”,
渲染:函数(){
var=这个;
//console.log(那个)
var eventCategory=new CategoryCollection();
//console.log(eventCategory);
eventCategory.fetch({
成功:功能(类别集合){
//console.log(CategoryCollection)
var template=35;.template($('#事件模板').html(),{CategoryCollection:CategoryCollection.models});
//console.log(模板)
即.$el.html(模板);
}
})
},
活动:{
单击。类别h2:“doSearch”
},
doSearch:功能(事件){
//点击按钮
console.log('clicked');
console.log(event.toElement.className)
导航('/category/'+event.toElement.className,{trigger:true});
//window.location.href=window.location.href+'/#/category/all';
}
});
var CategoryAbout=新的CategoryAbout();
var Router=Backbone.Router.extend({
路线:{
“家”,
“category/:categoryName”:“getCategory”,
}
});
var router=新路由器();
//控制台日志(路由器)
路由器.on('route:home',函数(){
//console.log(这个)
console.log('home');
CategoryAbout.render();
});
router.on('route:getCategory',函数(categoryName){
console.log(“类别名称”+类别名称);
var-urlToFetch;
对于(var i=0;i
以及类别的JSON文件
[
{
“类别”:“全部”,
“数据”:“all.json”
},
{
“类别”:“音乐”,
“数据”:“music.json”
},
{
“类别”:“业务”,
“数据”:“business.json”
},
{
“类别”:“体育”,
“数据”:“sports.json”
},
{
“类别”:“研讨会”,
“数据”:“workshops.json”
}
]
假设我们选择了车间类别,那么车间的JSON是这样的
{
“请求”:{
“地点”:“0”,
“ID”:“0”,
“类型”:“json”,
“城市”:“纽约”,
“edate”:0,
“页面”:0,
“关键字”:“0”,
“sdate”:0,
“类别”:“研讨会”,
“城市展示”:“纽约”,
“行”:50
},
“计数”:10,
“项目”:[
{
“事件id”:“230801950442480”,
“活动名称”:“节日特别活动是的!课程:):)”,
“拇指url”:http://graph.facebook.com/230801950442480/picture",
“拇指大小”:http://graph.facebook.com/230801950442480/picture?type=large",
“开始时间”:1395943200,
“开始时间显示”:“2014年3月27日星期四下午6:00”,
“结束时间”:1396213200,
“结束时间显示”:“2014年3月30日星期日晚上9:00”,
“地点”:“纽约,ABC街”,
“地点”:{
“街道”:“,
“城市”:“纽约”,
“状态”:“XYZ”,
“国家”:“PQR”
},
“标签”:“明天”,
“特色”:0
},
{
“事件id”:“230801950442480”,
“活动名称”:“节日特别活动是的!课程:):)”,
“拇指url”:http://graph.facebook.com/230801950442480/picture",
“拇指大小”:http://graph.facebook.com/230801950442480/picture?type=large",
“开始时间”:1395943200,
“开始时间显示”:“2014年3月27日星期四下午6:00”,
“结束时间”:1396213200,
“结束时间显示”:“2014年3月30日星期日晚上9:00”,
“地点”:“纽约,ABC街”,
“地点”:{
“街道”:“,
“城市”:“纽约”,
“状态”:“XYZ”,
“国家”:“PQR”
},
“标签”:“明天”,
“特色”:0
}
]
}
提前谢谢
如果我遗漏了任何数据,请告诉我,您的意思是,您不确定如何在Backbone.js中编辑项目?而不仅仅是项目。e、 g我选择了一个类别“workshop”,在workshop类别中,json应该从添加到集合和workshop列表中的服务器获取
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Category list</title>
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.1.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1>Category list</h1>
<hr />
<div class='categoryList'></div>
<div class='selected_category'></div>
</div>
<script type="text/template" id="events-template">
<% _.each( CategoryCollection, function(Category){ %>
<div class='category'>
<h2 class='<%= Category.get("category") %>' >
<%= Category.get("category") %>
</h2>
</div>
<% }); %>
</script>
<script type="text/template" id="selectedCategory-template">
<% _.each( SelectedCategoryCollection, function(selected_category){ %>
<div class='category_list'>
<%= selected_category.get("category") %>
</div>
<% }); %>
</script>
</body>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.2/underscore-min.js" type="text/javascript"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>
<script>
var categoryJSON;
var Category = Backbone.Model.extend();
var CategoryCollection = Backbone.Collection.extend({
model: Category,
url: 'categories.json',
parse: function (response) {
categoryJSON = response;
console.log(categoryJSON)
return response;
}
});
var CategoryAbout = Backbone.View.extend ({
el: '.categoryList',
render: function () {
var that = this;
// console.log(that)
var eventCategory = new CategoryCollection();
// console.log(eventCategory);
eventCategory.fetch({
success: function (CategoryCollection) {
// console.log(CategoryCollection)
var template = _.template($('#events-template').html(), {CategoryCollection: CategoryCollection.models});
// console.log(template)
that.$el.html(template);
}
})
},
events: {
"click .category h2" : "doSearch"
},
doSearch: function(event){
// Button clicked
console.log('clicked');
console.log(event.toElement.className)
router.navigate('/category/'+event.toElement.className, { trigger: true });
// window.location.href = window.location.href + '/#/category/all';
}
});
var CategoryAbout = new CategoryAbout ();
var Router = Backbone.Router.extend({
routes: {
'': 'home',
"category/:categoryName": "getCategory",
}
});
var router = new Router();
// console.log(router)
router.on('route:home', function () {
// console.log(this)
console.log('home');
CategoryAbout.render();
});
router.on('route:getCategory', function (categoryName) {
console.log( "Category Name " + categoryName );
var urlToFetch;
for (var i = 0; i < categoryJSON.length; i++) {
if(categoryJSON[i].category == categoryName)
{
urlToFetch = categoryJSON[i].data;
}
};
console.log(urlToFetch);
});
Backbone.history.start();
</script>
[
{
"category": "all",
"data": "all.json"
},
{
"category": "music",
"data": "music.json"
},
{
"category": "business",
"data": "business.json"
},
{
"category": "sports",
"data": "sports.json"
},
{
"category": "workshops",
"data": "workshops.json"
}
]
{
"request": {
"venue": "0",
"ids": "0",
"type": "json",
"city": "NY",
"edate": 0,
"page": 0,
"keywords": "0",
"sdate": 0,
"category": "workshops",
"city_display": "NY",
"rows": 50
},
"count": 10,
"item": [
{
"event_id": "230801950442480",
"eventname": "Holiday special YES! course :) :)",
"thumb_url": "http://graph.facebook.com/230801950442480/picture",
"thumb_url_large": "http://graph.facebook.com/230801950442480/picture?type=large",
"start_time": 1395943200,
"start_time_display": "Thu Mar 27 2014 at 06:00 pm",
"end_time": 1396213200,
"end_time_display": "Sun Mar 30 2014 at 09:00 pm",
"location": "NY,ABC street",
"venue": {
"street": "",
"city": "NY",
"state": "XYZ",
"country": "PQR"
},
"label": "Tomorrow",
"featured": 0
},
{
"event_id": "230801950442480",
"eventname": "Holiday special YES! course :) :)",
"thumb_url": "http://graph.facebook.com/230801950442480/picture",
"thumb_url_large": "http://graph.facebook.com/230801950442480/picture?type=large",
"start_time": 1395943200,
"start_time_display": "Thu Mar 27 2014 at 06:00 pm",
"end_time": 1396213200,
"end_time_display": "Sun Mar 30 2014 at 09:00 pm",
"location": "NY,ABC street",
"venue": {
"street": "",
"city": "NY",
"state": "XYZ",
"country": "PQR"
},
"label": "Tomorrow",
"featured": 0
}
]
}