通过获取 JSON 对象并将其推送到存储中来提供 Ember.js 模板

Feed an Ember.js template by fetching JSON objects and pushing them in the store

本文关键字:存储 模板 js Ember JSON 获取 对象      更新时间:2023-09-26

我正在尝试输入模板:

<script type="text/x-handlebars" data-template-name="wineries">
{{#each}}
<p>{{name}}</p>
{{/each}}
</script>

使用该路线:(查找评论)

Map.WineriesRoute = Ember.Route.extend({
    model: function() {
        var store = this.get('store');
        return Ember.$.getJSON('/api/wineries').then(function(response) {
            if (response.success) {
                response.data.forEach(function(winery) {
                    store.push('winery', winery);
                });
            }
            // what to do here?
            return store.findAll('winery');
        });
    }
});

而那个模型:

Map.Winery = DS.Model.extend({
    name:          DS.attr('string'),
    address:       DS.attr('string'),
    address_2:     DS.attr('string'),
    city:          DS.attr('string'),
    stateprovince: DS.attr('string'),
    country:       DS.attr('string'),
    latitude:      DS.attr('float'),
    longitude:     DS.attr('float'),
    full_address: function () {
        return this.get('address') + ' ' + this.get('city') + ' ' + this.get('stateprovince') + ' ' + this.get('country');
    }.observes('address', 'city', 'stateprovince', 'country')
});

我开始使用 Ember.js并阅读了很多文档,但我被困住了,因为即使在阅读文档页面后我也不知道如何处理商店。

1) 我应该怎么做才能正确地向商店提供物品?2) 进货后,我应该怎么做才能正确退回物品?3)还有其他与余烬相关的建议吗?

编辑:
似乎余烬数据不是我想要的,余烬模型似乎更适合我的用例。

谢谢!

首先:为什么要"手动"加载和推送服务器数据?

使用 DS.RESTAdapter or DS.ActiveModelAdapter,您可以让 ember 数据从 REST API 自动加载您的项目。有关更多详细信息,请参阅此处。

然后,您可以像这样简化路由类:

Map.WineriesRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('winery');
    }
});

TomShreds - 如果您按照互助异常的建议使用 RESTAdapter(我也建议这样做),那么您可以手动设置模型的复数方式:

DS.RESTAdapter.configure("plurals", { winery: "wineries" });

原始答案在这里:我在哪里指定 Ember 数据中模型的复数?