将一些对象推送到Firebase同步数据库并检索它们后,我得到以下数组:
public static Odds FromPercent(double percent)
{
int multiplier = GetDecimalMultiplier(percent);
return new Odds(1, (multiplier - (int)(percent * multiplier)) / (int)(percent * multiplier));
}
private static int GetDecimalMultiplier(double n)
{
if (n > 0.01)
{
return 100;
}
if (n > 0.001)
{
return 100000;
}
if (n > 0.0001)
{
return 100000000;
}
throw new Exception("Number too small!");
}
使用Firebase的.push()时,Firebase会生成一个随机ID,例如上面的那个。
尝试用Aurelia循环它们(使用repeat.for)
(index) products time
-KNOR5bBgf1ilVehk7BI Array[1] "22:26:47"
-KNORdccyvXat8wsP0SF Array[2] "22:29:10"
我收到以下错误
<order-details repeat.for="order of bill.orders" order.bind="order"></order>
我很确定它与键(索引)有关,因为之前我使用了增量索引(0,1,2,3,...)并且它工作得很好。 编辑:我已经尝试过其他键,例如&#34; 0&#34;和2他们也不工作。似乎Aurelia只知道如何重复以0 ???开头的数组
为什么会这样?
答案 0 :(得分:4)
您正在尝试使用repeat.for循环对象而不是数组。您需要将其转换为数组以重复对象的属性。请参阅此文章:http://ilikekillnerds.com/2015/08/iterating-objects-using-repeat-for-in-aurelia/
当你将它们更改为0,1,2时,javascript将其读作:
orders[0]
orders[1]
Javascript将其视为数组。
你拥有的是:
orders['-KNOR5bBgf1ilVehk7BI']
orders['-KNORdccyvXat8wsP0SF']
Javascript将此视为对象。如果没有使用Aurelia的repeat.for。
的值转换器,则无法遍历对象的属性由于必须通过值转换器,您可能需要设置绑定单元来告诉repeat.for更新。你可以在这里找到一个简单的例子:Update Aurelia observed property on change to containing array