Процесс запроса в emberjs

Я новичок в emberjs, я хочу знать поток запросов в emberjs. Есть несколько запросов, связанных с emberjs:

  • Какова конкретная роль контроллера в emberjs, где бы я ни видел, мы можем создать действие в шаблоне.

  • Существует стандартное соглашение об именах и связь между контроллером, маршрутами и представлением, но как можно связать контроллер, маршруты и представления.

  • как контролировать поток при обработке запроса?

    • управление передачей маршрутов к контроллеру или
    • контроллер передачи управления на маршруты.

    если мы хотим связать контроллер и маршруты вручную, то как это сделать.

1 ответ

Какова конкретная роль контроллера в emberjs, где бы я ни видел, мы можем создать действие в шаблоне.

Контроллер соединяет вашу модель с видом, как в шаблоне MVC. В Ember.JS вы можете использовать контроллер, чтобы сохранить свою логику, которая будет использоваться в одном конкретном модуле, управлять зависимостями или сохранять условия. В шаблонах вы можете использовать только простые условия (без и / или), поэтому всякий раз, когда вам нужно более сложное условие, вы должны поместить его в контроллер. Например

App.PersonController = Ember.ObjectController.extend({
   isPersonRich: function() {
      return @get('person.money') > 1000000 && @get('person.isReal')
   }.property('person.money', 'person.isReal')
});

Так что я человек, который не вымышлен и имеет более 1 000 000 активов, богат.

{{#if isPersonRich}}
    <p>This person is rich!</p>
{{/if}}

Существует стандартное соглашение об именах и связь между контроллером, маршрутами и представлением, но как можно связать контроллер, маршруты и представления.

Маршрут обычно выбирает данные из вашего бэкэнда.

App.PersonRoute = Ember.Route.extend({
   model: function(params) {
      this.store.find('person', params.person_id); 
   }
});

Каждый раз, когда вы вводите persons Маршрут Ember собирается позвонить в ваш API (используя данные Ember в этом случае), чтобы найти данного человека. Более того, в этом случае он будет отображать маршрут загрузки и даст вам запасной вариант после сбоя.

PersonView было бы местом, куда вы можете поместить свой код jQuery, который будет выполняться после успешного рендеринга шаблона.

App.PersonView = Ember.View.extend({
   didInsertElement: function() {
      this.$().find('*[data-toggle=tooltip]').tooltip();  
   }
});

В этом примере я добавляю подсказку начальной загрузки в шаблон.

как контролировать поток при обработке запроса?

Маршрут обрабатывается до контроллера, у вас есть даже setupController метод внутри каждого маршрута, который устанавливает модель для контроллера по умолчанию.

если мы хотим связать контроллер и маршруты вручную, то как это сделать.

Вы можете переписать setupController метод и в конце концов renderTemplate, Больше нечего делать. Я советую вам придерживаться соглашения об именах углей.

Кроме того, обратите внимание, что если ваш контроллер не справится с action это будет распространяться на ваш маршрут.

Другие вопросы по тегам