我在跨平台解决方案(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>
答案 0 :(得分:2)
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()
答案 1 :(得分:0)
您应该只能将id
属性添加到View创建功能中。
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
});