Pergunta

Eu sou novato no lado do cliente Javascript, MVC, primeiro ember.js app.

Eu segui as instruções aqui para usar o ember-resto na criação de uma pós-comentários tipo de modelos aninhados.

http://www.cerebris.com/blog/2012/01/26/beginning-ember-js-on-rails-part-2/

Eu comecei a escrever recursos aninhados como a seguir:

  resources :conversations do
    resources :comments
  end

Agora, o problema é quando eu tive que escrever o ember-resto do controlador:

App.commentsController = Ember.ResourceController.criar({ resourceType:App.Comentário resourceURL:'/conversas/:id/comentários" });

Eu não acho que eu posso usar o :id do meio;como eu poderia resolver isso?Não ember-dados resolve isso?Parece spine.js a integração será um pouco mais fácil de lidar com isso.Obrigado antecipadamente!

Foi útil?

Solução

Eu tenho sentido a resposta do seu comentário no meu post de ontem, então eu estou feliz que você perguntou sobre a questão aqui.

Eu deveria começar dizendo que eu escrevi ember-descanso como uma camada muito fina sobre jQuery.o ajax.Ele não é muito avançada, e não há sequer um recurso interno para as associações.No entanto, estou pensando em adicionar um agora que esta lib é a obtenção de um pouco de uso.Como você vai ver a partir de código abaixo, este conceito pode ser tratada, mas deve ser melhor captada no lib.

As associações podem ser tratadas através da criação de uma instância de um controlador de recursos dentro de cada pai de recursos.Cada controlador de recursos deve gerenciar um determinado conjunto de recursos, mas não necessariamente todos os recursos de um determinado tipo.

No seu caso, você pode estender ResourceController para gerenciar comentários para conversas:

  App.ConversationComments = Ember.ResourceController.extend({ 
    resourceType: App.Comment,

    // override _resourceUrl() to base the url on the conversation
    _resourceUrl: function() {
      return this.get("conversation")._resourceUrl() + "/comments";
    }
  });

Em seguida, você pode configurar uma instância de ConversationComments para cada conversa:

  App.Conversation = Ember.Resource.extend({
    resourceUrl:        '/conversations',
    resourceName:       'conversation',
    resourceProperties: ['prop1', 'prop2']

    // init comments
    init: function() {
      this.set("comments", App.ConversationComments.create({ conversation: this }));
    }
  });

Por último, mas não menos importante, você irá precisar para recuperar o comentário de cada conversa:

  conversation.get("comments").findAll();

Se você tem todos os comentários em json, alternativamente, você poderia usar loadAll().Onde e quando você chamar loadAll() ou findAll() depende das necessidades do seu aplicativo.Obviamente, você vai querer para reduzir o número de chamadas ajax para melhor desempenho.

Ember-dados é muito mais ambicioso projeto de ember-de resto, e já tem o apoio de associações, bem como recursos avançados, tais como transações.Com o que disse, sob desenvolvimento ativo com uma mudança de API.Se você for paciente e disposto a cavar o código, eu recomendo experimentar.Quando a poeira baixar um pouco, eu também pretendo blog sobre o assunto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top