Процесс запроса в 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
это будет распространяться на ваш маршрут.