2012-12-23 94 views
0

我做了一个函数来计算一个总价格,但它似乎工作。该函数用于从arraycollection中获取2个数据字段,并使用这两个数据字段来计算。计算不起作用 - flex

 [Bindable]public var total:Number=0; 
     private function gridClickEvent(event:ListEvent):void {    
      var quantity:Number=acCart[event.columnIndex].quantity; 
      var price:Number=acCart[event.columnIndex].price; 
      total += quantity * price; 

     } 

我的计算总量将在标签

<s:Label id="prijs" text="{total}" /> 

我要的是计算总价格显示。我有一个包含3个fielddata(Name产品,数量和价格)的数组集合。在函数中,我想从数组集合中抽取数据“数量”和数据“价格”,以便计算“总价”。

目前我写的功能不起作用。我没有收到任何数据。

+0

你能告诉我们什么是行不通的吗?你收到什么样的价值,你期望得到什么样的价值?你是否浏览了代码?计算之前的数量和价格的数值是多少? acCart.quantity和acCart.price的数据类型是什么?什么是acCart? event.rowIndex的价值是什么?我猜想你的演员从[未知数据类型]转换为数字时会出现错误。 – JeffryHouser

+0

我想要的是计算总价。我有一个包含3个fielddata(Name产品,数量和价格)的数组集合。在函数中,我想从数组集合中抽取数据“数量”和数据“价格”,以便计算“总价”。 目前我写的功能不起作用。我没有收到任何数据。 –

+0

acCart是3个fielddata的数组集合 –

回答

2

这是total+=不是total=+。您在运算符中有语法错误。

+0

我已将其更改为+ =,但它仍能奏效。标签始终显示0 –

+0

您是否检查过/使用的值? –

2

做一些调试:

private function gridClickEvent(event:ListEvent):void { 

    //see if getting expected values 
    trace(event.rowIndex); 
    trace(acCart[event.rowIndex].quantity); 
    trace(acCart[event.rowIndex].price); 

    var quantity:Number=parseFloat(acCart[event.rowIndex].quantity); 
    var price:Number=parseFloat(acCart[event.rowIndex].price); 
    total += quantity * price; 
} 
+0

Oke我调试了我的项目。调试器不能跟踪任何值。 –

+1

-1。执行调试是很好的建议;它没有做任何事来回答这个问题。 – JeffryHouser

+0

-1为了提供一个答案必须理解问题。如果绑定不起作用,则这些值必定是原因。为了得到一个想法,如果值是未定义的,NaN或其他,调试有助于找到答案。 –

0

为什么不

private function gridClickEvent(event:ListEvent):void { 
    .... // your math here 

    trace("old total = "+ total); 
    total += quantity * price; 
    trace("new total = "+ total); 

    // forget about binding and manually set the property 
    prijs.text = total.toString(); 
} 

绑定有时是柔性疯了,即使你/我完全理解绑定它可能仍然是有机会的机制绑定不起作用或者将值设置N次而不是一次(有几个MVC框架的情况)。

因为这个原因我讨厌绑定,我保留使用它。

PS:你的跟踪输出是什么? (请“调试”,不运行,以获得控制台输出)