У меня есть загрузка шаблона Underscore.JS в базовых текстовых данных из моей базы данных. Они загружаются в два тега div. Но я думаю (я не уверен здесь, пожалуйста, поправьте меня, если я ошибаюсь), что в зависимости от того, какая таблица Backbone получает в первую очередь, зависит от порядка, в котором отображаются эти теги div.
Итак, (а), я придумал ответ, я просто хотел узнать погоду или нет, это был лучший способ сделать это путем "цепочки" (если это правильный способ ее вызова), вызовы успеха в рамках тот же Backbone View, он загружает оба div в один и тот же шаблон Underscore. Так что это мой код в настоящее время,
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, чтобы убедиться, что Подчеркивание загружает каждый тег в том порядке, в котором я хочу? Или я полностью ошибаюсь и должен загружать обе эти коллекции в свой собственный взгляд, указывая на собственный шаблон? Если это так, я не понимаю пункт шаблона? То, как я их сейчас, у меня есть только один шаблон, который я использовал повторно!
Если я ошибаюсь, пожалуйста, поправьте меня
Благодаря,
EDIT EDIT:
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)
});
от qaru.site/questions/441662/...
РЕДАКТИРОВАТЬ :
Это относится к комментарию. О создании кода, я думаю, что вы называете организацию базового проекта (исправьте меня, если я ошибаюсь). Если это так, то, как я делаю, это написать мой код по модулю. Модуль в основном: шаблон BackboneModel/Collection, View и подчеркивание.
Архитектура:
/
main.js
About/
-- about.html <-- contains the underscore template
-- aboutView.js
-- aboutModel.js
-- aboutCollection.js
Menu/
-- menu.html
-- menuView.js
-- menuModel.js
-- menuCollection.js
И я загружаю его через AMD lib, в основном require.js
Эта архитектура является личной, что вы в основном увидите:
/
main.js
View/
-- about.js
-- menu.js
Model/
-- aboutModel.js
-- menuModel.js
Collection/
-- aboutCollection.js
-- menuCollection.js
Хорошим примером является архитектура TODOMvc
Ваш код будет работать, но это не очень читаемо и будет ухудшаться, если вам нужно будет добавить некоторую выборку:
HomeText.fetch({
AboutText.fetch({
Module1Text.fetch({
Module2Text.fetch({
});
});
});
});
Это называется пирамидой гибели. Чтобы избежать этого, используйте обещания.
Как примечание, jquery действительно обещает