【问题标题】:Can't pass data from child to child无法将数据从孩子传递给孩子
【发布时间】:2010-11-28 12:35:09
【问题描述】:

我有一个父母和两个孩子。我正在尝试将数据从 child1 传递到 child2,但不断收到错误消息:1061:通过静态类型的引用调用可能未定义的方法。

在 child1 我有以下代码:

[Bindable]
public var TestVar:String='sometext';

在 child2 中,我试图获取 TestVar 的值,然后将其用作通过 php 搜索 mysql 数据库的值。:

  var newTestVar:String = child1.TestVar;
  if(newTestVar != null){
    getResult.token = someService.get_filtered_Paged(newTestVar);
  }

  else{
    getSecResult.token = someService.get_paged(); 
  }

【问题讨论】:

  • 你说父母/孩子是什么意思?某些容器的子组件,或相互继承的类?此外,查看 child1 变量的声明方式也会有所帮助(从错误消息来看,可能 child1 实际上是类的名称而不是实例,但除非您发布更多信息,否则我们无法知道。)

标签: apache-flex actionscript-3


【解决方案1】:

@ape 是对的,你应该设置为静态或使用 MVC 注入属性。

【讨论】:

    【解决方案2】:

    public var TestVar:String='sometext'; 更改为public static var TestVar:String='sometext'; 您收到此错误是因为您在未将其标记为静态时尝试在静态上下文中访问变量:TestVar

    【讨论】:

      【解决方案3】:

      您收到此错误是因为您将 child1 声明为实际 child1 的超类。 TestVar 没有在那里定义是很自然的。最重要的是,超类不是动态的,因此您需要通过以下方式访问该字段:

      child1["TestVar"];
      

      这不会产生编译错误,并且如果 child1 持有的实例是正确的,则在运行时访问该字段应该没有问题。

      【讨论】:

        【解决方案4】:

        假设您在 MyClass1 中定义了TestVar。将child1 转换为该类型:

        var newTestVar:String = MyClass1(child1).TestVar;
        

        如果这没有帮助,请发布更大的代码部分。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-07-22
          • 1970-01-01
          • 1970-01-01
          • 2021-10-16
          • 1970-01-01
          • 2018-06-29
          • 1970-01-01
          • 2021-10-31
          相关资源
          最近更新 更多