钛合金 - 无法使用id禁用标签栏内的标签

时间:2015-07-22 14:56:28

标签: javascript titanium appcelerator titanium-alloy appcelerator-mobile

我有一个包含标签的TabbedBar,里面有Label,其启用属性我需要通过编码在.js文件中更改。我已经尝试设置该特定标签的ID并使用过。 .js文件中的$.lblProf.enabled = false;。抛出错误:

  

Undefined不是对象(评估'$ .lblProf.enabled = false')

demo.xml

<TabbedBar id="tabbedBar" platform="ios" backgroundColor="#369" top="44dp" height="30dp" width="300" index="0" onClick="tabBarClick">
   <Labels> 
      <Label>Details</Label>
      <Label>Photos</Label>
      <Label>Documents</Label>
      <Label id="tabProfile">Profile</Label>                        
   </Labels>
</TabbedBar>

demo.js

$.tabProfile.enabled = true;

如果我试图直接禁用,那么

<Label id="lblProf" enabled="false">

工作正常。

1 个答案:

答案 0 :(得分:0)

正如@visola所提到的,您的标签需要一个ID才能以编程方式访问它们。否则,Alloy会给他们一个自动生成的ID,这通常对人类没有帮助。

XML

<TabbedBar id="tabbedBar" platform="ios" backgroundColor="#369" top="44dp" height="30dp" width="300" index="0" onClick="tabBarClick">
   <Labels id='labelsList'> 
      <Label id='details'>Details</Label>
      <Label id='photos'>Photos</Label>
      <Label id='documents'>Documents</Label>
      <Label id='tabProfile'>Profile</Label>                        
   </Labels>
</TabbedBar>

对于tabProfile分配,$是页面层次结构中的顶级对象。因此,$.tabProfile不存在。这就是改变它没有效果的原因。您需要深入了解页面$.TabbedBar.Labels.Label。话虽如此,Label没有enabled属性。因此,您的应用会抛出undefined错误。

我会查看Titanium.UI.iOS.TabbedBar文档以获取更多示例。您似乎需要通过更改颜色来模拟禁用它们,例如将其设置为浅灰色,然后将touchEnabled设置为false。

希望能帮助你前进。