Подтвердить что ты не робот

Как получить доступ к родительской модели во вложенном маршруте индекса с помощью ember.js?

У меня есть следующая структура маршрута

App.Router.map(function(match) {
    this.route("days", { path: "/" });
    this.resource("day", { path: "/:day_id" }, function() {
        this.resource("appointment", { path: "/appointment" }, function() {
            this.route("edit", { path: "/edit" });
        });
    });
});

Когда я нахожусь внутри AppointmentIndexRoute, я ищу способ создать новую модель, используя какой-то мета-день со дня (родительской) модели, но поскольку модель дня еще не знает об этом назначении, я не знаю, как связать их до тех пор, пока назначение не будет создано /, и фиксация будет отключена.

Любая помощь будет высоко оценена

4b9b3361

Ответ 2

Что делать, если я не использую данные ember? Как получить родительский идентификатор в маршруте, например

  this.resource('workspace',function () {
    this.resource('workflow', {path: '/:workspace_id/workflow'}, function () {
      this.route('show', {path: '/:workflow_id'});
    });
  });

Этот код не будет работать:

App.WorkflowShowRoute = Em.Route.extend({
  model: function(params) {
      var ws  = this.modelFor('workspace');  //ws is undefined
      return this.store.find('workflow', params.id, ws.id);
  }
});

EDIT: Я нашел обходной путь, он не идеален, но работает точно так, как я этого хочу.

  this.resource('workspace',function () {
    this.route('new');
    this.route('show', {path: '/:workspace_id'});
    //workflow routes
    this.resource('workflow', {path: '/'}, function () {
      this.route('new', {path:'/:workspace_id/workflow/new'});
      this.route('show', {path: '/:workspace_id/workflow/:workflow_id'});
    });
  });

И в моем маршруте рабочего процесса я могу получить доступ к workpace_id jus, поскольку я ожидаю от свойства params:

App.WorkflowShowRoute = Em.Route.extend({
  model: function(params) {
      return this.store.find('workflow', params.workflow_id, params.workspace_id);
  }
});

Наконец, вот моя ссылка - внутри рабочей области .show route helper:

{{#each workflow in workflows}}
  <li>
    {{#link-to 'workflow.show' this.id workflow.id}}{{workflow.name}}{{/link-to}}
  </li>
{{/each}}