这是以下内容的后续内容:访问 ember.js 中的另一个模型数据 https://stackoverflow.com/questions/19386351/accessing-another-models-data-in-ember-js
我遇到一种情况,我想使用选定的多选框来过滤列表。发送数据时,this.store.find('tag')
始终返回 DS.PromiseArray。 Ember.Select 似乎可以很好地处理这个问题,但所选的多重选择似乎不喜欢它。我见过这样的事情:
this.store.find('tag').then(function(items) {
return items.map(function(item){
return [item.get('id'), item.get('name')]
})
})
但我似乎总是在地图函数上遇到 typeerror{}...
这是一个概述问题的jsfiddle:http://jsfiddle.net/viciousfish/TEZjW/ http://jsfiddle.net/viciousfish/TEZjW/
奖励积分!演示将所选选择显示为单个选择(为了清楚起见)。我想用它作为多选,可以通过设置来设置multiple: true
in App.MultipleSelect
Update这是另一个我认为应该起作用的jsfiddle,但似乎不起作用!http://jsfiddle.net/viciousfish/FZ6yw/1/ http://jsfiddle.net/viciousfish/FZ6yw/1/
更进一步,这个小提琴表明 .then 应该可以解构 PromiseArrayhttp://jsfiddle.net/marciojunior/DGT5L/ http://jsfiddle.net/marciojunior/DGT5L/
这是一个功能性的jsfiddlehttp://jsfiddle.net/FZ6yw/2/ http://jsfiddle.net/FZ6yw/2/
我将 Promise 代码移至路线的 afterModel 挂钩,因为 Promise 很友好https://gist.github.com/machty/5723945 https://gist.github.com/machty/5723945
我还更改了地图函数,您返回数组,在我的代码中它返回对象
App.AssetsRoute = Ember.Route.extend({
model: function () {
return this.store.find('asset');
},
afterModel: function () {
var self = this;
return this.store.find('tag').then(function(items) {
var allTags = items.map(function(item){
return {id:item.get('id'), name:item.get('name')};
});
self.controllerFor('tags').set('content', allTags);
})
},
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)