Уровни заказа на шаблонах Underscore, убедившись, что форма данных Backbone Collection загружается в установленном порядке?

0

У меня есть загрузка шаблона 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, чтобы убедиться, что Подчеркивание загружает каждый тег в том порядке, в котором я хочу? Или я полностью ошибаюсь и должен загружать обе эти коллекции в свой собственный взгляд, указывая на собственный шаблон? Если это так, я не понимаю пункт шаблона? То, как я их сейчас, у меня есть только один шаблон, который я использовал повторно!

Если я ошибаюсь, пожалуйста, поправьте меня

Благодаря,

Теги:
underscore.js
backbone.js
underscore.js-templating

1 ответ

1
Лучший ответ

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 действительно обещает

  • 0
    @isthisloveCool, я немного знаю JQuery, но я никогда не сталкивался с обещаниями, прежде чем выглядит хорошо. Я смотрел на свой код и думал, что это не самый лучший метод построения кода. Я получаю представление об обещаниях, запускаю один раздел кода, жду его завершения, а затем запускаю следующий. Но обещания - лучший способ сделать это, у Backbone или Underscore есть лучшие методы? Благодарю.
  • 0
    я отредактировал, надеюсь, это ответит на ваш вопрос.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню