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