Я собирался ответить на ваш комментарий к моему сообщению со вчерашнего дня, поэтому я рад, что вы задали этот вопрос здесь.
Я должен начать с того, что написал ember-rest очень тонкимслой поверх jQuery.ajax.Он не очень продвинутый, и даже нет встроенного средства для ассоциаций.Тем не менее, я рассматриваю возможность добавления одного из них, поскольку эта библиотека пользуется большим спросом.Как вы увидите из приведенного ниже кода, эту концепцию можно обработать, но ее лучше абстрагировать в lib.
Ассоциации можно обработать, создав экземпляр контроллера ресурса в каждом родительском ресурсе.Каждый конкретный контроллер ресурсов должен управлять конкретным массивом ресурсов, но не обязательно всеми ресурсами определенного типа.
В вашем случае вы можете расширить ResourceController для управления комментариями к беседам:
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";
}
});
Затем вы можете настроить экземпляр ConversationComments для каждой беседы:
App.Conversation = Ember.Resource.extend({
resourceUrl: '/conversations',
resourceName: 'conversation',
resourceProperties: ['prop1', 'prop2']
// init comments
init: function() {
this.set("comments", App.ConversationComments.create({ conversation: this }));
}
});
И последнее, но не менее важное: вам нужно получить комментарии для каждого разговора:
conversation.get("comments").findAll();
Если у вас есть все комментарии в json, вы можете использовать loadAll ().Где и когда вы вызываете loadAll () или findAll (), зависит от потребностей вашего приложения.Очевидно, что вы захотите уменьшить количество вызовов ajax для лучшей производительности.
Ember-data - гораздо более амбициозный проект, чем ember-rest, и уже имеет поддержку ассоциаций, а также расширенные функции, такие как транзакции,С учетом сказанного, он находится в стадии активной разработки с меняющимся API.Если вы терпеливы и готовы копаться в коде, я настоятельно рекомендую попробовать его.Когда пыль немного оседает, я также планирую написать об этом в блоге.