我试图创建我的第一个主干应用程序,并有一些困难让我的头脑如何使用视图。
我试图做的是有一个搜索输入,每次提交它从服务器获取一个集合。我想有一个视图控制搜索输入区域,并收听那里发生的事件(在我的例子中是一个按钮点击),另一个视图带有显示搜索结果的子视图。
单个结果将有其他方法(如查找他们输入的日期或时间等)。
我的模型和集合定义如下:
SearchResult = Backbone.model.extend({
defaults: {
title: null,
text: null
}
});
SearchResults = Backbone.Collection.extend({
model: SearchResult,
initialize: function(query){
this.query = query;
this.fetch();
},
url: function() {
return '/search/' + this.query()
}
});
在我的视图中,有一个视图表示搜索输入:
var SearchView = Backbone.View.extend({
el: $('#search'),
events: {
'click button': 'doSearch'
},
doSearch: function() {
console.log('starting new search');
var resultSet = new SearchResults($('input[type=text]', this.el).val());
var resultSetView = new ResultView(resultSet);
}
});
var searchView = new SearchView();
var ResultSetView = Backbone.View.extend({
el: $('#search'),
initialize: function(resultSet) {
this.collection = resultSet;
this.render();
},
render: function() {
_(this.collection.models).each(function(result) {
var resultView = new ResultView({model:result});
}, this);
}
});
var ResultView = Backbone.view.extend({
tagName: 'div',
model: SearchResult,
initialize: function() {
this.render();
},
render: function(){
$(this.el).append(this.model.get(title) + '<br>' + this.model.get('text'));
}
});
我的html大致如下所示:
<body>
<div id="search">
<input type="text">
<button>submit</button>
</div>
<div id="results">
</div>
</body>
在我的代码中,它一直延伸到控制台。日志(“开始新搜索”)
但是没有从ResultSetView集合的initialize方法对服务器进行ajax调用。
我设计得对吗,或者有更好的方法来做这件事。我认为因为两个视图绑定到不同的dom元素,我不应该从另一个视图中实例化一个视图。任何建议都很感激,如果我需要更清楚地说明这一点,请让我知道,我会尽力重新措辞这个问题。
您没有告诉您的ResultSetView
侦听集合中的任何事件。“fetch”是异步的。成功完成后,将发送“重置”事件。视图需要侦听该事件,然后对该事件执行它需要执行的任何操作(如渲染)。
一些问题(可能不是唯一的问题):
我用脊梁骨。js 我试图从服务器获取我的数据,但它不起作用 (服务器发送json对象) 我搜索了但没有回应 我的代码哪里不正确?
下面是我用(FacetModels)填充我的收藏的内容 如何访问可用值[]数组 “FacetModels”:[{“FacetDisplayLabel”:null,“SelectedValues”:[],“AvailableValues”:[],“UnknownResults”:0,“ActionURI”:null,“FacetGroupName”:“Category”,“FacetGroupFri
问题内容: 我正在开发一个将用作其他应用程序的可扩展框架的应用程序。 基本类之一称为节点,节点具有内容。SQL表如下所示: TABLE节点(NodeId int,....等) 表格NodeContentRelationship(NodeId int,ContentType字符串,ContentId int) 开发人员可以扩展应用程序以创建自己的内容类型。 显然,从关系数据库的角度来看,这很不好,因
我有一个收藏模型的典型结构。 在视图中,每个对象都有一个“编辑”按钮,该按钮应该取消激活其他对象的所有“编辑”按钮。 我想知道这样做的最佳做法是什么。谢谢!!
我正在向我的主干集合中添加一个项目,如下所示: 我在MyCollection中覆盖了同步,如下所示: 但是,似乎在add之后不会调用sync,add成功执行并触发“add”事件。我错过什么了吗?还是这是正确的行为?
我有一个骨干应用程序,我正在构建与Trigger.io,并有一点困惑,为什么当我单击手机工具栏中的后退按钮时,数据正在消失。 以下是设置: 我有一个视图SearchResultsView,看起来像这样(为了简洁起见删除了Trigger.io代码): 以下是模板: 这是路由器: 它在实践中是这样工作的:当我最初加载页面时,没有结果列表(应该是这样)。我输入查询并执行搜索,然后它会回来,按照它应该的方