如何从 ion-select 选项中获取值
How to get the value from ion-select option
我有一个名为 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}} {{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)
进行以下更改后检查:
// html 变化
<ion-select [(ngModel)]="gaming" (change)="optionsFn();">
<ion-option [value]="item" *ngFor="let item of options">{{item.name}} {{item.price}}</ion-option>
</ion-select>
//.ts 变化
optionsFn() {
console.log(this.gaming);
let item = this.gaming;
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;
}
有几件事共同导致了该错误。
第一个变化是不再像这样使用 click
事件:
(click)="optionsFn(item);
您应该像这样使用 Ionic 公开的 ionChange
事件:
(ionChange)="optionsFn();"
另请注意,由于您使用 [(ngModel)]="place"
将 select 元素绑定到组件的其中一个属性,因此您无需将该项目作为参数发送,因为 this.place
将在触发 ionChange
事件时成为 selected 项。
这就是为什么您的 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;
}
使用 (ngModelChange) 而不是 (click) 事件。
(ngModelChange)="optionsFn()"
每当模型值改变时,ngModelChange 将自动调用相关函数。
<ion-item>
<ion-label>place</ion-label>
<ion-select [(ngModel)]="place" (ngModelChange)="optionsFn(item)">
<ion-option value="item" *ngFor="let item of options">{{item.name}} {{item.price}}</ion-option>
</ion-select>
</ion-item>
- 上离子-select元素集
#id
和(ionChange)="anyFunc()"
<ion-select (ionChange)="anyFunc()" #anyName>
<ion-option value="{{item.id}}" *ngFor="let item of apicall?.items"></ion-option>
</ion-select>
- 相应地编辑ts文件。最重要的是将
ViewChild
设置为 ionic-angular
的 Select
类型
import { Select } from 'ionic-angular';
@ViewChild('anyName') theSelectObject: Select;
contructor() { }
anyFunc() {
const theValue = this.theSelectObject.value;
}
祝你好运!
你可以这样做
<ion-select (ionChange)="itemId = $event.target.value">
<ion-select-option *ngFor="let s of itemIds" value="{{s.id}}">{{s.name}}</ion-select-option>
</ion-select>
或者您也可以这样做
<ion-select value="{{itemId}}" [(ngModel)]="itemId">
<ion-select-option *ngFor="let s of itemIds" value="{{s.id}}">{{s.name}}</ion-select-option>
</ion-select>
在你的 .ts
文件中只需声明变量 itemId
;
根据我对 (ionChange)="optionsFn();"
的经验,我们可以使用 [(ngModel)]="selectVariable"
,稍后可以在 .ts 文件中轻松获取
我有一个名为 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}} {{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)
进行以下更改后检查:
// html 变化
<ion-select [(ngModel)]="gaming" (change)="optionsFn();">
<ion-option [value]="item" *ngFor="let item of options">{{item.name}} {{item.price}}</ion-option>
</ion-select>
//.ts 变化
optionsFn() {
console.log(this.gaming);
let item = this.gaming;
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;
}
有几件事共同导致了该错误。
第一个变化是不再像这样使用 click
事件:
(click)="optionsFn(item);
您应该像这样使用 Ionic 公开的 ionChange
事件:
(ionChange)="optionsFn();"
另请注意,由于您使用 [(ngModel)]="place"
将 select 元素绑定到组件的其中一个属性,因此您无需将该项目作为参数发送,因为 this.place
将在触发 ionChange
事件时成为 selected 项。
这就是为什么您的 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;
}
使用 (ngModelChange) 而不是 (click) 事件。
(ngModelChange)="optionsFn()"
每当模型值改变时,ngModelChange 将自动调用相关函数。
<ion-item>
<ion-label>place</ion-label>
<ion-select [(ngModel)]="place" (ngModelChange)="optionsFn(item)">
<ion-option value="item" *ngFor="let item of options">{{item.name}} {{item.price}}</ion-option>
</ion-select>
</ion-item>
- 上离子-select元素集
#id
和(ionChange)="anyFunc()"
<ion-select (ionChange)="anyFunc()" #anyName>
<ion-option value="{{item.id}}" *ngFor="let item of apicall?.items"></ion-option>
</ion-select>
- 相应地编辑ts文件。最重要的是将
ViewChild
设置为ionic-angular
的
Select
类型
import { Select } from 'ionic-angular';
@ViewChild('anyName') theSelectObject: Select;
contructor() { }
anyFunc() {
const theValue = this.theSelectObject.value;
}
祝你好运!
你可以这样做
<ion-select (ionChange)="itemId = $event.target.value">
<ion-select-option *ngFor="let s of itemIds" value="{{s.id}}">{{s.name}}</ion-select-option>
</ion-select>
或者您也可以这样做
<ion-select value="{{itemId}}" [(ngModel)]="itemId">
<ion-select-option *ngFor="let s of itemIds" value="{{s.id}}">{{s.name}}</ion-select-option>
</ion-select>
在你的 .ts
文件中只需声明变量 itemId
;
根据我对 (ionChange)="optionsFn();"
的经验,我们可以使用 [(ngModel)]="selectVariable"
,稍后可以在 .ts 文件中轻松获取