代码之家  ›  专栏  ›  技术社区  ›  Mike Robinson

如何在动态呈现的列表中创建切换按钮

  •  1
  • Mike Robinson  · 技术社区  · 15 年前

    对于我的palm pre应用程序,我有一个动态生成的列表(从SQLite拉入数据、加载到模型、绑定)。这很好,但现在我需要为每个动态生成的项添加一个开/关切换。在模板中包含切换开关是可行的,但我无法正确分配小部件功能。我正在尝试在场景中绑定小部件,但到目前为止运气不好。

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

    2 回复  |  直到 15 年前
        1
  •  0
  •   Ryan Watkins    15 年前

    这并不优雅,但一种方法是使用列表助手的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)
    

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

        2
  •  0
  •   Mike Robinson    15 年前

    从Palm开发人员那里得到了答案:

    如果使用切换按钮的.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>
    

    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;
    }
    
    推荐文章