1

对于我的掌上应用程序,我有一个动态生成的列表(从 SQLite 中提取数据,加载到模型中,绑定)。这工作正常,但现在我需要为每个动态生成的项目添加一个开/关切换。在模板中包含切换开关有效,但我无法正确分配小部件功能。我正在尝试在场景中绑定小部件,但到目前为止还没有运气。

那么有人知道如何在动态列表中绑定小部件的任何 webOS 教程(或有示例)吗?

4

2 回答 2

0

从 Palm Dev 自己那里得到了答案:

如果您使用切换按钮的 .value 属性来设置它的状态,则根本不需要在切换按钮上调用 setupWidget 。相反,将 .value 属性绑定到每个列表项模型。以下是步骤:

1. 在 list-item.html 模板中:

<div class='palm-row'>
    <div class='palm-row-wrapper'>
        <div x-mojo-element="ToggleButton"></div>
        #{title}
    </div>
</div>

2.在list-assistant.js设置函数中(注意,我用的是jQuery)

Mojo.Event.listen(jQuery("#my-list").get(0), Mojo.Event.propertyChange, this.listPropertyChangeHandler.bind(this));

3.在listPropertyChangeHandler中

ListAssistant.prototype.listPropertyChangeHandler = function(event){
    var newValue = event.model.value;
}
于 2009-09-18T14:06:57.497 回答
0

它并不优雅,但一种方法是使用列表助手的 onItemRendered 属性。

分配的函数通过列表小部件、项目模型和项目节点传递。在这个处理程序中,您可以在项目节点中找到您的切换小部件,并附加您的功能。

像这样的东西:

onItemRendered: function(listWidget, itemModel, itemNode){
    var item = itemNode.select('div.mywidget').first();
    Mojo.Event.listen(item, Mojo.Event.tap, this.handleTap.bind(this));
}.bind(this)

在内置应用程序的源代码中有一些如何使用 onItemRendered 的示例。例如,Tasks 应用程序这样做是为了取消删除“特殊”项目的能力。

于 2009-09-18T02:45:27.493 回答