2
的能力,我嘗試使用每個幫助過的對象,並得到:灰燼不支持把手使用的每個對象
Assertion failed: The value that #each loops over must be an Array. You passed [object Object]
使用灰燼(1.0)和車把的最新版本。我最好的猜測是Ember不支持綁定對象,這就是斷言觸發的原因。
有人可以確認嗎?
的能力,我嘗試使用每個幫助過的對象,並得到:灰燼不支持把手使用的每個對象
Assertion failed: The value that #each loops over must be an Array. You passed [object Object]
使用灰燼(1.0)和車把的最新版本。我最好的猜測是Ember不支持綁定對象,這就是斷言觸發的原因。
有人可以確認嗎?
首先,你是正確的,Ember本身依賴於作爲數組的項目。由於Ember試圖保持性能,而不是重新渲染/重新計算已經完成的項目,所以添加了一個數組觀察器,並且觀察項目每次都會更改一個,而不是重新渲染整個集合。
的每個助手本身實際上支持循環訪問對象(該對象中的關鍵的)
Handlebars.registerHelper('each', function(context, options) {
var fn = options.fn, inverse = options.inverse;
var i = 0, ret = "", data;
var type = toString.call(context);
if(type === functionType) { context = context.call(this); }
if (options.data) {
data = Handlebars.createFrame(options.data);
}
if(context && typeof context === 'object') {
if(context instanceof Array){
for(var j = context.length; i<j; i++) {
if (data) { data.index = i; }
ret = ret + fn(context[i], { data: data });
}
} else {
for(var key in context) {
if(context.hasOwnProperty(key)) {
if(data) { data.key = key; }
ret = ret + fn(context[key], {data: data});
i++;
}
}
}
}
if(i === 0){
ret = inverse(this);
}
return ret;
});
你爲什麼要這麼做?你能不能索引你想要的價值?或者,如果你不想使用這些值,你總是可以把它變成一個數組?我無法想象會有支持在對象上使用#each。 – Hana
也許他試圖循環一個對象,並打印每個屬性,它的價值? – mlienau