gpt4 book ai didi

javascript - Backbone : Create collection from JSON error

转载 作者:行者123 更新时间:2023-11-29 19:52:44 24 4
gpt4 key购买 nike

jQuery(function() {

var Hotel = Backbone.Model.extend({
defaults: {
idHotel:"",
hotelName:"RIU Pravets",
hotelAddress:"Ezeroto N:1",
hotelStars:"3",
hotelRoomsCount:"120",
hotelPicture:"img/placeholder.png",
cityName:"Pravets"
},
});

var Hotels = Backbone.Collection.extend({
model:Hotel,
url: './hotels'
});

var HotelView = Backbone.View.extend({
tagName:"div",
className:"hotelContainer",
template:$("#hotelTemplate").html(),

render:function () {
var tmpl = _.template(this.template); //tmpl is a function that takes a JSON object and returns html
this.$el.html(tmpl(this.model.toJSON())); //this.el is what we defined in tagName. use $el to get access to jQuery html() function
return this;
},

events: {
"click .delete": "deleteBook"
},

deleteBook:function () {
//Delete model
this.model.destroy();

//Delete view
this.remove();
}
});

var HotelsView = Backbone.View.extend({
el:$("#hotels"),

initialize:function(){
this.collection = new Hotels();
this.collection.fetch().done(function () {
console.log(this.collection.fetch())
})
.fail(function() {
console.log(this.collection.fetch())
throw 'Something went wrong while fetching the todos';
});;
this.render();

this.collection.on("add", this.renderHotel, this);
this.collection.on("remove", this.removeHotel, this);
this.collection.on("reset", this.render, this);
},

render: function() {
var that = this;
_.each(this.collection.models, function(item) {
that.renderHotel(item);
}, this);
},

addHotel: function(e) {
e.preventDefault();//Preventing the form from submiting and reloading the page

var formData = {};

$("#addHotel").find("input").each(function(i, el){
if ($(el).val() !== "") {
formData[el.id] = $(el).val();
}
});

hotels.push(formData);

this.collection.add(new Hotel(formData));
},

events:{
"click #add":"addHotel"
},

renderHotel:function(item){
var hotelView = new HotelView({
model: item
});
this.$el.append(hotelView.render().el);
}
});

var hotelsView = new HotelsView();

});

./hotels 上的 JSON

[{"idHotel":"8","hotelName":"Al'arab","hotelAddress":"Al'arab street","hotelStars":"5","hotelRoomsCount":"100", "hotelPicture":"hotel3.jpg","hotelCity":"6","idCity":"6","cityName":"Dubai"},{"idHotel":"3","hotelName":"Kinpinski ","hotelAddress":"ul.Bistur Pqsuk N:4","hotelStars":"5","hotelRoomsCount":"130","hotelPicture":"hotel1.jpg","hotelCity":"4", "idCity":"4","cityName":"瓦尔纳"},{"idHotel":"2","hotelName":"LeFleour","hotelAddress":"bul.Vitoshka N:3","hotelStars":"4","hotelRoomsCount":"23","hotelPicture":"hotel2.jpg","hotelCity":"1","idCity":"1","cityName":"Sofia"}]

结束时给出错误 this.collection is undefined

这是HTML

    <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<link rel="stylesheet" href="screen.css">
</head>
<body>
<?php
session_start();
$_SESSION['currentPage'] = 'index.php';
include_once('hotels.php');
include_once('header.php');
?>
<div id="hotels">
<script id="hotelTemplate" type="text/template">
<img src="img/<%= hotelPicture %>"/>
<ul>
<li><%= hotelName %></li>
<li><%= hotelAddress %></li>
<li><%= hotelStars %></li>
<li><%= hotelRoomsCount %></li>
<li><%= cityName %></li>
</ul>
</script>
</div>
<script src="http://localhost:8889/js/jquery.js"></script>>
<script src="http://localhost:8889/js/underscore.js"></script>
<script src="http://localhost:8889/js/backbone.js"></script>
<script src="http://localhost:8889/js/app.js"></script>
</body>
</html>

最佳答案

回调中 this 的值 is not what you think .尝试将您的代码更改为:

initialize:function(){
var that = this;
this.collection = new Hotels();
this.collection.fetch().done(function () {
console.log(that.collection.fetch())
})
.fail(function() {
console.log(that.collection.fetch())
throw 'Something went wrong while fetching the todos';
});;
this.render();

this.collection.on("add", this.renderHotel, this);
this.collection.on("remove", this.removeHotel, this);
this.collection.on("reset", this.render, this);
},

关于javascript - Backbone : Create collection from JSON error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17155686/

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