不使用 Alloy 时如何在 Appcelerator (mobileweb) 中设置 DIV 属性 ID

How to set the DIV attribute id in Appcelerator (mobileweb) when not using Alloy

我在跨平台解决方案(iOS、Android、MobileWeb)中使用 Appcelerator。我希望能够在 mobileweb 中看到我的 UI 元素的 id 属性。我看过如何使用 Alloy 设置 id 的示例,但我不使用 Alloy,我在 JavaScript.

中编写了所有元素的脚本

有人可以告诉我 属性 我必须申请视图才能在 html 中的结果 DIV 中设置 ID。

以下是示例视图:

this.Viewer = Ti.UI.createScrollView(
{
    left:25,
    right:5,
    bottom:5,
    top: 0,
    width: this.App.Width - 40,
    height:  200,
    contentHeight: Ti.UI.SIZE,
    borderColor: "#333333",
    borderWidth: 3,
    horizontalWrap: false,
    layout:"vertical",
    scrollType: "vertical",
    scrollsToTop: true,
    showVerticalScrollIndicator: true,
    showHorizontalScrollIndicator: false,
    verticalBounce: false,
    visible: true,
    zIndex:100
});

和结果 HTML

<div class="TiUIElement TiUIView TiLayoutsComposite" data-widget-id="Ti.UI.View:36" style="background-color: rgb(0, 255, 0); background-repeat: no-repeat; background-size: 100% 100%; border-color: rgb(51, 51, 51); border-width: 2px; left: 5px; top: 90px; width: 507px; height: 626px;"></div>

您应该可以像这样将 id 属性 添加到您的视图创建函数中。

this.Viewer = Ti.UI.createScrollView(
{
    id: 'myView',   // <---- HERE IS YOUR ID
    name: 'myView', // <---- IF YOU NEED THE `NAME` ATTRIBUTE AS WELL
    left:25,
    right:5,
    bottom:5,
    top: 0,
    width: this.App.Width - 40,
    height:  200,
    contentHeight: Ti.UI.SIZE,
    borderColor: "#333333",
    borderWidth: 3,
    horizontalWrap: false,
    layout:"vertical",
    scrollType: "vertical",
    scrollsToTop: true,
    showVerticalScrollIndicator: true,
    showHorizontalScrollIndicator: false,
    verticalBounce: false,
    visible: true,
    zIndex:100
});

Titanium Mobile Web 旨在模仿原生 iOS 和 Android 平台。由于 iOS 和 Android 没有 DOM 的概念,因此没有 Titanium API 暴露 DOM.

换句话说,您不应该能够在 <div> 上设置 "id",甚至不知道 <div> 存在。

但是,如果绝对需要,您可以这样做。在所有 UI 个元素上都有一个 属性,称为 domNode。这仅在 Titanium Mobile Web 上可用。您需要解决这个问题才能 运行 您的应用在 iOS 或 Android.

var myButton = Ti.UI.createButton({ title: 'click me' });
if (Ti.Platform.name === 'mobileweb') {
    myButton.domNode.setAttribute('id', 'foo');
}

专业提示:Titanium Mobile Web 无法访问浏览器的垃圾收集器,因此如果删除 UI 元素,则必须显式调用未记录的 destroy() 方法,以便事件断开连接,DOM 个节点将被销毁,状态将被垃圾收集。

myButton.destroy && myButton.destroy()