Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >离子型2:从popover回调访问主页的服务

离子型2:从popover回调访问主页的服务
EN

Stack Overflow用户
提问于 2017-03-26 01:22:01
回答 1查看 528关注 0票数 1

我使用angularJs已经有一段时间了,我刚刚切换到了角2,我从一个页面调用了一个弹出器,当一个项从弹出器中被选中时,我应该从一个api中获得一些数据。我遇到的问题是,当我使用“this”时,它不再引用Vendor上下文,因此我无法访问VendorServices函数。是否有一种方法来引用父类(调用popover的页面),从而得到它的所有变量?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { Component } from '@angular/core';
import { VendorService} from '../vendors/services'
import { NavController, NavParams } from 'ionic-angular';
import { Meals } from '../meals/meals';
import { PopoverController } from 'ionic-angular';
import { LocationsPopover } from '../locations-popover/locations-popover';

@Component({
  selector: 'vendors',
  templateUrl: 'vendors.html'
})
export class Vendors {

  mealsPage = Meals;
  public locationName: string;
  vendors: any;
  selectedLocation:String;


  constructor(public navCtrl: NavController, public params:NavParams, private vendorService:VendorService, public popoverController: PopoverController) {
    this.locationName = params.get('location');

  }

这是处理弹出程序的函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  showLocationsDropdown(event){
    console.log("locations");
    let popover = this.popoverController.create(LocationsPopover,{
      cb:function(location){
        this.selectedLocation = location.location_name;
        console.log("selectedLocation", location.location_name);
        // this.vendorService.getVendorsByLocationId(location.id).subscribe(
        this.vendorService.getVendors().subscribe(
          results=>{
            console.log(results);
            this.vendors = results;
          }
        );
      }
    });
    popover.present({
      ev:event
    });
  }

这就是我所犯的错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-26 01:25:55

如果像那样使用function(location){,那么函数中的this的封闭作用域将是函数“实例”。您可以执行类似(location)=>{的操作来访问词法this

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
showLocationsDropdown(event){
        console.log("locations");
        let popover = this.popoverController.create(LocationsPopover,{
          cb:(location)=>{
            this.selectedLocation = location.location_name;

或将词法this分配给变量(如self),如果不想在函数中丢失this,则使用该变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
showLocationsDropdown(event){
    console.log("locations");
    var self = this; //<-- assign here
    let popover = this.popoverController.create(LocationsPopover,{
      cb:function(location){
        self.selectedLocation = location.location_name; //<-- use here
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43027057

复制
相关文章

相似问题

如何停止onHardwareBackButton的回调函数?离子型

13

Swift: Popover拒绝回调

412

离子2 SQLite承诺管理回调

11

离子型2-从服务获取数据

18

从回调访问jwtFromRequest

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文