Javascript 在下划线模板上对级别进行排序,确保按设置的顺序加载主干集合中的数据?
我有一个从数据库加载基本文本数据的下划线.JS模板。这些数据加载到两个div标记中。但我认为(我不确定,如果我错了,请纠正我),根据表主干首先得到什么,取决于这些div标记在中的显示顺序 所以(a),我想出了一个答案,我只是想知道天气与否这是最好的方法通过“链接”(如果这是正确的调用方式)成功调用,在相同的主干视图中,这将两个div加载到相同的下划线模板中。这是我目前的代码Javascript 在下划线模板上对级别进行排序,确保按设置的顺序加载主干集合中的数据?,javascript,jquery,backbone.js,underscore.js,underscore.js-templating,Javascript,Jquery,Backbone.js,Underscore.js,Underscore.js Templating,我有一个从数据库加载基本文本数据的下划线.JS模板。这些数据加载到两个div标记中。但我认为(我不确定,如果我错了,请纠正我),根据表主干首先得到什么,取决于这些div标记在中的显示顺序 所以(a),我想出了一个答案,我只是想知道天气与否这是最好的方法通过“链接”(如果这是正确的调用方式)成功调用,在相同的主干视图中,这将两个div加载到相同的下划线模板中。这是我目前的代码 var TextEditView = Backbone.View.extend({ inititalize:
var TextEditView = Backbone.View.extend({
inititalize: function() {
this.listenTo(this.BasicTextModel, "change", this.render);
},
el: $(".BasicTextTemplate"), //Template loader placeholder
render: function() {
var that = this;
var AboutText = new TextAboutCollection(); //Get About page text
var HomeText = new TextHomeCollection(); //Get Home page text
HomeText.fetch({
success: function(Text) {
var GetHomeTxt = _.template( $('script.BasicText').html(), { Text: Text.toJSON() } ); //Load About text into template
that.$el.append(GetHomeTxt);
that.trigger('ChangeTxt', that);
AboutText.fetch({
success: function(Text) {
var GetAboutTxt = _.template( $('script.BasicText').html(), { Text: Text.toJSON() } ); //Load About text into template
that.$el.append(GetAboutTxt);
that.trigger('ChangeTxt', that);
} //End of Success Call to AboutText
}); //End of .fetch for AboutText
}}); //End of Success & .fetch calls for HomeText
} //End of render view function
}); //End of TextEditView
AboutText仅在hometext获取的成功调用完成后加载,对吗?即使我没有得到100%的支持,它现在看起来确实有效
(b)是否有一种简单的方法向每个div标记添加一个“level”或ID,以确保下划线按照我想要的顺序加载每个标记?还是我完全错了,应该将这两个集合加载到它们自己的视图中,指向它们自己的模板?如果是这样,我不明白模板的要点是什么?按照我现在拥有它们的方式,我只有一个重复使用过的模板
如果我错了,请纠正我
谢谢,编辑的编辑:
model = new Model({_id:id})
var fetched = model.fetch();
// wait for the model to be fetched
$.when(fetched).then(function(){
view = new View({model:model})
app.content.show(view)
});
从
编辑: 这是关于评论的。 关于建筑规范,我认为你指的是骨干项目的组织(如果我错了,请纠正我)。如果是这样,我现在的做法就是按模块编写代码。模块基本上是:BackboneModel/集合、视图和下划线模板 架构:
/
main.js
About/
-- about.html <-- contains the underscore template
-- aboutView.js
-- aboutModel.js
-- aboutCollection.js
Menu/
-- menu.html
-- menuView.js
-- menuModel.js
-- menuCollection.js
一个很好的例子是
您的代码可以工作,但可读性不强,如果您必须添加一些fetch,则情况会更糟:
HomeText.fetch({
AboutText.fetch({
Module1Text.fetch({
Module2Text.fetch({
});
});
});
});
这是电话。
要避免这种情况,请使用
值得注意的是,@isthisloveCool,我对JQuery有点了解,但我从未遇到过看起来不错的承诺。我在看我的代码,并认为这不是构建代码的最佳方法。我明白了承诺的含义,运行一段代码,等待它完成,然后运行下一段。但是,承诺是最好的方法吗?主干还是下划线有更好的方法?谢谢,谢谢,我会调查的。我看到很多人都在谈论AMD作为一种建立网站的方法,我打算看看它。@isthisloveCool,好的,谢谢你的更新,但我不确定我的解释是否正确。我的意思是如何在.promise()中编写代码,并在视图的成功调用中运行我需要的代码。我已经研究了.promise()并大致了解了它,但不确定(而且似乎找不到一个好的例子)如何用Backbone.view实现它。谢谢很多感谢-我已经用
code
实现了它。当code
时,代码看起来好多了,而且更容易阅读。非常感谢-很抱歉,我似乎无法给出你的答案,我需要更多的代表:(没关系,最好是你发现了)。此外,我忘了告诉您,有一种方法可以检查何时提取了数据,回调也可以满足您的需要。
HomeText.fetch({
AboutText.fetch({
Module1Text.fetch({
Module2Text.fetch({
});
});
});
});