Ember:将整个对象添加到控制器

时间:2017-02-10 23:50:25

标签: ember.js

是否有一种直接从javascript对象添加控制器属性的简单方法?

与必须手动指定我想要在3个地方使用的每个查询参数相反:queryParams,QP控制器属性和路由queryParams [key] .refreshModel = true ...我只想维护这些内容一个对象并将其更新到所有这些地方:

const cfg = {
    defaultQueryParams: {
        q: null,
        paging: '18',
        search_sort: 'relevance',
        search_title: null,
        search_page: null,
        filter_breadcrumb: [],
        filter_price: [],
        filter_size_apparel: [], 
        filter_color: [] 
    }
};

在我试过的控制器中:

export default Ember.Controller.extend({
    queryParams: Object.keys(cfg.defaultQueryParams), // works great!

    init() {  
        this._super(...arguments);
        this.addObject(cfg.defaultQueryParams); // doesn't work: "this.addObjects is not a function"
        // same with addObjects, setObjects
    },
    ...
});

我也试过迭代JS对象并使用setter。它适用于字符串,但不适用于空数组:

    for (let [key, value] of Object.entries(cfg.defaultQueryParams)) {  
        this.set(key, value);
    }

数组作为属性添加,但在控制台中是未定义的,而不是Array [0]

我是不是想要这样做,或者想要这样做?

轻松一点! Ember newb! :d

1 个答案:

答案 0 :(得分:1)

ember中的所有对象都有setProperties方法。

请查看this twiddlesetProperties