模型未在主干.js中呈现
Model not rendering in Backbone.js
我正在构建一个简单的移动JavaScript应用程序,包括Backbone.js和Forge。我正在尝试做的是拥有一个建议模型和这些模型的类别集合,并创建一个建议并使用下划线模板在视图中呈现该建议。但这一建议并没有被采纳。这是主文件.js:
(function ($) {
forge.enableDebug();
var Suggestion = Backbone.Model.extend({
urlRoot: function () {
if (this.isNew()){
return "/suggestions"
}
"/suggestions/" + this.id + ".json"
},
defaults: {
id: this.Category.length + 1,
title: "A Suggestion",
description: "You should go suggest something",
ranking: 1,
done: false,
},
initialize: function() {
forge.logging.log('The suggestion model has been initialized')
},
});
var Category = Backbone.Collection.extend({
model: Suggestion,
urlRoot: function(){
'/suggestions'
},
random: function(){
var randomnumber=Math.floor(Math.random()*this.length + 0)
forge.logging.log("just randomized" + randomnumber )
},
initialize: function(){
forge.logging.log("app initiliazed")
//this.fetch();
},
addSuggestions: function(suggestions){
},
}});
Router = Backbone.Router.Extend({
routes:{
"":"index",
"suggestion/:suggestion_id":"Suggestion"
},
index: function(){
category.index();
}
});
SuggestionView = Backbone.View.Extend({
model: Suggestion
el: $('#suggestions')
tagName: "div",
className: "suggestion"
template: _.template($("#SuggestionTemplate").html())
render: function(){
$(this.el).html(template(this.model.toJSON()));
},
events:{
"tap li": "DetailedView"
},
initialize: function(){
forge.logging.log("rendering suggestions")
this.render();
}
});
DetailedView = Backbone.View.Extend({
model: Suggestion
template: _.template($("#DetailedTemplate").html)
render: function(){
this.$el.html(template(this.model.toJSON))
}
});
CategoryView = Backbone.View.Extend({
el:$("#main")
tagname: "div",
initialize: function(){
forge.logging.log("rendering Suggestions")
this.render();
},
render: function(){
this.Suggestions.each(this.addOne)
}
addOne: function(suggestion){
var view = new SuggestionView
this.$el.append(view.render().el)
}
});
var suggestion1 = new Suggestion()
suggestion1.set(title:"this")
var category = new Category();
var router = new Router();
var categoryView = new CategoryView();
} (jQuery));
而指数.html:
<!DOCTYPE html>
<html>
<head>
<title>Just The Best</title>
<link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css" />
<script type="text/javascript" src="js/underscore.js"></script>
<script type="text/javascript" src="js/backbone.js"></script>
<script data-main="scripts/main" src="js/require.js"></script>
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/main.js"></script>
<script src="https://trigger.io/catalyst/target/target-script-min.js#47DC7BF1-5D55-4549-8B64-216CA27A73FF"></script>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<div data-role="page">
<div id="#main">
</div>
</div>
<script type="text/html" id="SuggestionTemplate">
//<div class="suggestion">
<h2>Suggestion</h2>
<h3><%=Suggestion.title%></h3>
//</div>
</script>
</body>
如果我错过了一个基本功能,我真的很抱歉。谢谢。
传递
el
查看构造函数比传递extend()
更常见。 至于其余部分,您可能想要更像以下内容的内容。 此外,您的代码缺少大量分号和逗号。
CategoryView = Backbone.View.Extend( {
// ...
render : function () {
this.collection.each( _.bind( this.addOne, this ) );
},
addOne : function( suggestion ) {
var view = new SuggestionView( { model : suggestion } );
this.$el.append( view.render().el );
}
} );
var category = new Category( [
{ title : "this" }
] );
var router = new Router();
var categoryView = new CategoryView( {
collection : category
} );
相关文章:
- 如何使用javascript访问sails.js模型中的属性
- 如何基于Knockout js模型设计控件样式
- 在Knockout.js模型中创建项之间的关系
- 使用OPTIONS而不是GET获取Backbone JS模型
- Ember.js-模型find()方法中的异步调用
- 将多级 mongodb 文档转换为 Backbone.js 模型/集合
- Jasmine找不到Backbone.js模型
- 将对象设置为Backbone.js模型,而不必调用“;set()"在每一处房产上
- Ember.js模型保存不向服务器发送数据
- 将表单复制到Backbone.js模型
- 如何将angular.js模型变量存储在javascript变量中
- 骨干.js模型中的几个问题
- 默认情况下,一个模型属性等于 sail.js 模型中的另一个模型属性
- 骨干 js 模型 保存不止一次
- 简单的骨干网.js模型连接
- 将集合加载到主干.js模型中
- 以 json 或 url 编码格式发送 js 模型
- 如何使用 Wolfpack.js 测试我的 Sails.js 模型的唯一电子邮件属性
- 更新 MySQL 数据库中的主干.js模型
- JSON到骨干.js模型