Как обновить или обновить элемент RadListView на платформе iOS? - PullRequest
0 голосов
/ 02 мая 2019

У меня есть RadListView, который получает данные из наблюдаемого массива объектов и отображает его содержимое в виде текста.При изменении одного из значений объекта в наблюдаемом массиве RadListView не обновляет и не обновляет значение, даже с radlist.refresh ();

На Android: android: платформа, это не проблема, она работает и прекрасно обновляется, но на платформе iOS это не так.

Вот мой код XML

            ```<lv:RadListView items="{{ groceryList }}" id="marad" row="1" height="100%"
                itemSwipeProgressStarted="onSwipeCellStarted" swipeActions="true">

                <lv:RadListView.itemTemplate>
                    <GridLayout class="grocery-list-item">
                        <Label 
                        id="nameLabel" textWrap="true" class="p-15 radlist"    text="{{ 'ناو: ' + name + '\n' + ' بڕ: ' + quantity + '\n' + ' نرخی یەک دانە: ' + sellPrice }}" />

                    </GridLayout>
                </lv:RadListView.itemTemplate>
                         <lv:RadListView.headerItemTemplate>
                         <StackLayout>
          <Button class="btn btn-primary" text="خوێندنه‌وه‌ بە باڕکۆد" tap="barcodeSell"></Button>

 <Label class="page-placeholder" text="نرخی گشتی" textWrap="true"/>

<Label  

        text="0"
        id="totalprice" 
        textWrap="true"
        class="input input-border"/>

    <Button class="btn btn-primary" text="بفرۆشە" tap="tapSell"></Button>
 </StackLayout>
        </lv:RadListView.headerItemTemplate>

                <lv:RadListView.itemSwipeTemplate>
                                      <GridLayout columns="auto,  *, auto">


                        <GridLayout id="increase-view" col="2" tap="onIncrease"
                            class="increase-view">
                           <Label 
                            text="&#xf101;" class="fonticon duplic" /> 
                        </GridLayout>

                        <GridLayout id="delete-view" col="0" tap="onDelete"
                            class="delete-view">

                            <Label 
                            text="&#xf100;" class="fonticon duplic" /> 

                        </GridLayout>
                    </GridLayout>

                </lv:RadListView.itemSwipeTemplate>
            </lv:RadListView>```

Вот моя функция «изменить значение» в JS:

exports.onIncrease = function (args) {

  var item = args.view.bindingContext;
  var index = groceryList.indexOf(item);
  var totalPrice = groceryList.getItem(index).sellPrice;

  var element = groceryList.getItem(index);
  var quantity = groceryList.getItem(index);
  var quantity3 = quantity["quantity"];

  dialogs.prompt({

    message: "بڕی کاڵاکە دیاریبکە",
    okButtonText: "هەڵبژێرە",
    cancelButtonText: "داخە",


    inputType: dialogs.inputType.number
}).then(function (r) {


  if(r.result) {
  element["quantity"] = r.text;
  groceryList.setItem(index, element);

 sumPrice = (sumPrice - (Number(totalPrice)*Number(quantity3)));

  sumPrice =  sumPrice + (Number(r.text)*Number(totalPrice));

  label.text = sumPrice;

  radlist.refresh();
 }
  else {
    var rslt = false;
  }
});



};

Вот код, который передает RadListView:

function onNavigatingTo(args) {
    const page = args.object;
    label = page.getViewById("totalprice");
    const sideDrawer = app.getRootView();
    sideDrawer.gesturesEnabled = false;

    spanquantity = page.getViewById("quantbtn");

    groceryList = new ObservableArray([

    ]);
    pageData = observableModule.fromObject({
      groceryList: groceryList,

    });

    page.bindingContext = pageData;

    radlist = page.getViewById("marad");
     sumPrice = 0;


}
exports.onNavigatingTo = onNavigatingTo;

И затемданные элемента передаются в Observable Array, если в базе данных был найден входной штрих-код, но это не связано с этой проблемой, я говорю это, чтобы прояснить код.

Еще одна вещь, если япроведите по RadListView и нажмите кнопку «Удалить элемент», он удаляет элемент в порядке, поэтому, в случае кнопки «Удалить», он обновляет и обновляет список, я думаю.

Итак, эта проблема связана с увеличением количества элементовпроцесс.

...