2010-12-12 2 views
2

Как добавить элемент в многомерный массив? Я хочу, чтобы добавить цену на item2, но я получаю «толчок не является функцией»Добавление элемента в массив

<fx:Script> 
    <![CDATA[ 

     [Bindable] 
     public var dp:Array = [ 
      { label: "item1", desc: "this is item 1" }, 
      { label: "item2", desc: "this is item 2" }, 
      { label: "item3", desc: "this is item 3" } 
     ]; 


     private function addItem():void{ 
      var v:String = '$8.99'; 
      dp[1].push(("price:", v)); 
      dp.refresh(); 

     } 
    ]]> 
</fx:Script> 


<mx:VBox> 
    <mx:Repeater id="r" dataProvider="{myAC}"> 
     <mx:RadioButton label="{r.currentItem.label}"/> 
     <mx:Text text="{r.currentItem.desc}"/> 
     <mx:Text text="{r.currentItem.price}"/> 
    </mx:Repeater> 


<s:Button label="push" click="addItem()"/> 


</mx:VBox> 


</mx:Application> 

ответ

4

У вас есть массив объектов, а не массив массивов. Попробуйте это:

[Bindable] 
    public var dp:Array = [ 
     { label: "item1", desc: "this is item 1", price : "" }, 
     { label: "item2", desc: "this is item 2", price : "" }, 
     { label: "item3", desc: "this is item 3", price : "" } 
    ]; 

    private function addItem():void{ 
     var v:String = '$8.99'; 
     dp[1]["price"] = v; 
     dp.refresh(); 

    } 
+0

... 'addItem' действительно должны быть изменены с учетом действия ... – 2010-12-12 17:30:54

+0

теперь я получаю сообщение об ошибке:«Обновить()»не является функцией –

+0

использование ArrayCollection вместо массива: общественное var dp: ArrayCollection = new ArrayCollection ([ {label: "item1", desc: "this item 1", price: ""}, {label: "item2", desc: "this item item 2", price : ""}, {label: "item3", desc: "это пункт 3", цена: ""} ]); см. Http://blog.flexdevelopers.com/2009/03/flex-basics-arraycollection.html – wajiw