【问题标题】:How do I show/hide images in Enyo?如何在 Enyo 中显示/隐藏图像?
【发布时间】:2011-07-11 07:09:01
【问题描述】:

我正在使用 HP webOS 3.0 和 Enyo 框架。

我有一个简单的问题,即如何在单击按钮时显示和隐藏图像。我有 2 张图片,我想在点击一个按钮时显示图片并在点击另一个按钮时隐藏。

我在一个视图上有两个窗格,分别称为左窗格和右窗格。 我在左窗格中有大约 10 个项目。

在每个项目上单击相应的视图会在右窗格中调用。

我正在使用以下代码。

   showTaskView: function(){
      this.$.rightPane.selectViewByName("taskView");
   },

现在我想知道如何在包含左窗格和右窗格的主视图中访问控件的属性。

例如, 我想在右窗格中显示/隐藏任务视图中显示的图像,单击按钮既不在左窗格也不在右窗格中,而是在包含左窗格和右窗格的视图的标题部分。

不允许我从主视图访问控件的 image.setSrc 方法。 我用下面的代码试过了。

editTask: function() {
   this.$.task.image.setSrc("images/image2.jpg");
}

editTask: function() {
   this.$.image.setSrc("images/image2.jpg");
}

它给了我以下错误:

Cannot read property 'setSrc' of undefined

【问题讨论】:

  • 您需要更新它以显示您的实际种类定义——没有看到窗格是如何在层次结构中定义的,我无法告诉您为什么 this.$.image 不起作用。
  • 听起来您在范围或名称定义方面存在一些问题。我假设 this.$ 有“图像种类”?您是否在图片种类上设置了名称?
  • @Ajay Patel 如果您已经解决了问题,请将解决问题的步骤放在答案中,并接受您自己的答案。谢谢!

标签: webos enyo


【解决方案1】:

使用 VirtualList,您的哈希将仅引用当前“选定”行。 “选定”是接收事件的行或使用 prepareRow() 显式选择的行。如果要更改每一行,则应设置一个属性并在列表上调用 refresh() 以使其重新呈现。

以下应该可以工作(我认为...)

setupRow: function(inSender, inIndex) {
                 var row = this.data[inIndex];
                 if (row) {
                    this.$.caption1.setContent("Greet a " + row.task + ":");
                    this.$.star.setSrc("images/grey-star.png");
                    if(this.hideStart) this.$.star.hide();
                    this.$.caption2.setContent(row.assignto);
                    return true;
                 }
               },
               buttonClick: function(){
               this.hideStar = true;
               this.$.myVirtualList.refresh();
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多