angular - 如何从 ionic 选择选项中获取值

标签 angular typescript ionic-framework ionic2 ionic3

我有一个名为options 的对象数组。

这是我的html代码

    <ion-item>
        <ion-label>place</ion-label>

        <ion-select [(ngModel)]="place" (click)="optionsFn(item);">
          <ion-option value="item" *ngFor="let item of options">{{item.name}} &nbsp;&nbsp;{{item.price}}</ion-option> 
        </ion-select>
      </ion-item>

{{salespriceOp}}

{{quantityOp}}

这是我的.ts文件代码

product_option_value_idOp
  priceOp
  salespriceOp
  quantityOp
  skuOp
  nameOp

  options =  [
          {
            "product_option_value_id": "45",
            "name": "Bangalore Auto",
            "quantity": "12",
            "sku": "56876",
            "price": "100.00",
            "salesprice": "50"
          },
          {
            "product_option_value_id": "51",
            "name": "Hyderabad Auto",
            "quantity": "23",
            "sku": "56543",
            "price": "200.00",
            "salesprice": "60"
          },
          {
            "product_option_value_id": "52",
            "name": "Delhi Auto",
            "quantity": "14",
            "sku": "98767",
            "price": "300.00",
            "salesprice": "80"
          }
        ];
  constructor(public navCtrl: NavController) {

  }

  optionsFn(item) {//here item is an object 
    console.log(item);
    this.product_option_value_idOp = item.product_option_value_id;
    this.priceOp = item.price;
    this.salespriceOp = item.salesprice;
    this.quantityOp = item.quantity;
    this.skuOp = item.sku;
    this.nameOp = item.name;
  }

i am able to invoke the function but i am getting undefined in console.log(item)

最佳答案

有几件事共同导致了该错误。 第一个变化是不再像这样使用 click 事件:

(click)="optionsFn(item);

您应该像这样使用 Ionic 公开的 ionChange 事件:

(ionChange)="optionsFn();"

另请注意,由于您使用 [(ngModel)]="place" 将 select 元素绑定(bind)到组件的属性之一,因此无需将项目作为参数发送,因为当 ionChange 事件被触发时,this.place 将成为选中的项目。

这就是为什么您的 optionsFn 方法看起来像这样:

public optionsFn(): void { //here item is an object 
    console.log(this.place);

    let item = this.place; // Just did this in order to avoid changing the next lines of code :P

    this.product_option_value_idOp = item.product_option_value_id;
    this.priceOp = item.price;
    this.salespriceOp = item.salesprice;
    this.quantityOp = item.quantity;
    this.skuOp = item.sku;
    this.nameOp = item.name;
  }

关于angular - 如何从 ionic 选择选项中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39503876/

相关文章:

angular - 如何使用 Swagger 代码生成处理同一 api 端点上的多个方法?

android - http请求在ionic android 8+中失败

typescript - 在 WebStorm for TypeScript 中自动导入类的快捷方式

javascript - 为什么简单的 html 和 css 在 Angular 2 元素中的工作方式与 vanilla html 网站不同

AngularJS typescript 指令

javascript - 两个异步任务可以同时访问同一个数组吗?

java - ionic cordova构建android错误nuillpoijtexception

node.js - ionic 应用程序中不受信任的 Node 代码 - 如何为我自己的应用程序定义和实现防火墙规则?

angular - ng-build 上的端口和代理配置

javascript - Javascript 中的二进制到图像