Ember.js 余烬:将整个对象添加到控制器

Ember.js 余烬:将整个对象添加到控制器,ember.js,Ember.js,有没有一种简单的方法可以直接从javascript对象添加控制器属性 与手动指定我要在3个位置使用的每个查询参数不同:queryParams、QP controller properties和route queryParams[key]。refreshModel=true…我只想在一个对象中维护这些内容并将其更新到所有这些位置: const cfg = { defaultQueryParams: { q: null, paging: '18',

有没有一种简单的方法可以直接从javascript对象添加控制器属性

与手动指定我要在3个位置使用的每个查询参数不同:queryParams、QP controller properties和route 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);
    }

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

我想做这件事,还是想这样做,是不是太离谱了


放松点!新灰烬!:D

余烬中的所有对象都有
setProperties
方法


请查看和

“数组是作为属性添加的,但在控制台中是未定义的,而不是数组[0]”。你是如何检查这个的?console.log(这个);从我的一个控制器操作中。我可以在控制台中展开该类,当我添加filter_breadcrumb:[]。。。直接连接到控制器并执行相同操作我看到:filter_breadcrumb:Array[0]您考虑过使用mixin吗?我实际上尝试过创建mixin并将其导入路由和控制器。两个问题。首先,我不希望在路由(仅控制器)上设置q、分页、搜索\排序等属性。queryParams存在名称空间问题。例如,控制器需要一个名为queryParams的数组,为了设置refreshModel=true,路由需要一个名为queryParams的哈希数组。所以我不能把QueryParam放在mixin中,它们必须为route和controller分开保存。谢谢……我希望这能起作用,但我遇到了和我在循环中尝试“设置”时遇到的相同问题。这里有一个旋转来说明我的意思:然后,这里有一个旋转可以工作,因为我直接在控制器中设置了cfg属性:从我所能告诉你的,你不能像这样使用setProperties整体设置对象,只有字符串。即使对象具有值。除非我做错了什么。