vuejs2更改方法当前不起作用

时间:2019-09-11 06:53:40

标签: vue.js vuejs2 vue-router

我有一个使用vuejs2的项目 这是html代码

<input @keyup='check_item_offer(arrayresult.id, arrayresult.unit_id, arrayresult.qty, key, 16)' v-model='arrayresult.qty' />

这是vuejs2方法中的check_item_offer代码

check_item_offer:function(item_id ,unit_id, quantity, key, tax) {
  this.taxss = tax;
  $.ajax({
    type:'POST',
    url: path + 'check_item_offer',
    data: {
      item_id: item_id,
      unit_id: unit_id,
      quantity: quantity
    },
    success:(data) => {
      console.log(data);
      if(data != '') {
        $.ajax({
          type:'POST',
          url: path + 'get_item_data',
          data: {
            item_id: item_id,
            unit_id: unit_id
          },
          success:(datas) => {
            data['item_sale_offer_detale_price'] = data['item_sale_offer_detale_price'] * (1 + this.taxss / 100);
            datas = datas * (1 + this.taxss / 100);
            var qty = this.arrayresults[key].qty;
            var old_price = datas;
            var offer_quantity = data['item_sale_offer_detale_quantity'];
            var remain = this.arrayresults[key].qty % data['item_sale_offer_detale_quantity'];
            var new_price = data['item_sale_offer_detale_price'];
            var item_with_new_price_quantity = qty - remain;
            var price_with_offers = (item_with_new_price_quantity / offer_quantity) * new_price;
            var price_without_offers = old_price * remain;
            var total_price = (price_with_offers + price_without_offers) / qty;
            this.arrayresults[key].item_smallest_unit_selling_price = total_price;
            this.arrayresults[key].items_quantity_selling_price = total_price;
          }
        });
      }
    }
  });
}

一切正常

如果我使用键盘更改arrayresult.qty,它将正常工作 但是,如果我使用ajax调用arrayresult.qty的另一种方式来更改keyup,则直到我进入输入并按任意键之前,它不会运行check_item_offer

即使我更改了check_item_offer甚至ajax调用,也如何运行arrayresult.qty
谢谢

1 个答案:

答案 0 :(得分:1)

如果您要触发函数 check_item_offer ,请将其设置为keyup事件以更改v模型 arrayresult.qty 中的值,以编程方式 ajax调用,那么您需要像这样设置v-model变量的 watch

watch:{
    'arrayresult.qty'(newVal, oldVal){
        this.check_item_offer(itemId, unitId, newVal, key, 16);
    }
}

有关vuejs watch

的更多信息