Ember.js:绑定查询参数以选择其内容以异步方式加载的菜单

时间:2014-10-14 07:21:43

标签: ember.js

我有一个带有国家/地区过滤器的用户搜索表单。选择菜单中的国家/地区(下拉列表)与ember-data异步加载。所选国家/地区绑定到查询参数:

https://myapp.com/users?country=123

  • 工作:当用户从选择菜单中选择国家/地区时,网址会更新并包含国家/地区ID
  • 无效:当用户浏览回包含国家/地区作为查询参数的网址时,选择菜单确实包含所有国家未选择正确的国家/地区+查询参数变为未定义:/users?country=undefined

模板:

{{view "select" 
        content=countries 
        value=country
        optionLabelPath="content.name"
        optionValuePath="content.id"}}

控制器:

export default Ember.Controller.extend({

    countries: Ember.computed(function () {
        return this.store.find('country');
    }),

    country: null,

    queryParams: ['country'],

});

路线:

export default Ember.Route.extend({
    model: function (params) {
        return this.store.find('user', params);
    }
});

有什么建议吗?谢谢! :)

1 个答案:

答案 0 :(得分:3)

我太近了!看起来我加载的国家太晚了,因此select没有数据与查询参数匹配。

我刚刚移动了加载model钩子中的国家/地区的代码:

model: function (params) {
    return Ember.RSVP.hash({
        users: this.store.find('user', params),
        // Pre-load the countries so the queryParams binding
        // with the select menu work properly
        countries: this.store.find('countries')
    });
},

现在我已经找到了解决方案,这似乎很明显!