【发布时间】:2015-12-14 22:12:29
【问题描述】:
我知道在 Ember 中(按键)查找数组值的传统语法是使用 .[] 语法,例如:
{{myArray.[0]}}
但是,我有一个关联数组,尽管有一个单独的模型/控制器属性列出了键,但我无法执行查找 - 值始终为 undefined。
作为一个例子,这里是一个简单的控制器:
App.IndexRoute = Ember.Route.extend({
model: function () {
var ret = [];
ret['notGreat'] = ['Plain Yogurt', 'Clams'];
ret['great'] = ['Pizza', 'Chicken'];
return Ember.RSVP.hash({
keys: ['great', 'notGreat'],
array: ret
});
}
});
我的模板使用:
{{#each key in model.keys}}
<li>{{key}}</li>
{{#each subItem in model.array.[key]}}
<li>Subitem: {{subItem}}</li>
虽然model.array.[key] 似乎总是未定义。在 Ember 中进行关联数组查找有技巧吗?我也很乐意编写像getFoodsWithKey(key) 这样的控制器函数,但没有找到任何资源表明调用控制器函数(与支持其缓存范例的计算属性相反,不't allow parameters) 是可能的。
JSFiddle(数组表示法):http://jsfiddle.net/6Evrq/786/
JSFiddle(对象属性表示法):http://jsfiddle.net/6Evrq/787/
【问题讨论】:
-
请注意,JS 没有“关联数组”,尽管它确实有可以通过键来完成相同事情的对象。简而言之,
var ret = []; ret['foo'] = 'bar';不合适,不应该使用。相反,请使用var ret = {}; ret['foo'] = 'bar';。另见:stackoverflow.com/q/874205/84473
标签: javascript arrays ember.js