【问题标题】:Titanium Alloy - unable to disable Label inside Tabbedbar using id钛合金 - 无法使用 ID 禁用标签栏中的标签
【发布时间】:2015-07-22 14:56:28
【问题描述】:

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

未定义不是对象(评估'$.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">

它工作正常。

【问题讨论】:

  • 你没有在 demo.xml 的 Labels 元素中缺少 ID 吗?
  • 感谢您的回复 visola。因此,即使我在 Labels 元素中添加 id 如何访问 demo.js 中的 lblProf ?
  • 看起来你做对了。也许你错过了别的东西。这就是你的所有代码吗?你是不是错过了一些像合金或窗户这样的元素?我见过的所有样品都有。
  • 维索拉。这是我拥有的完整代码。

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


【解决方案1】:

正如@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。

希望能帮助你前进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2011-12-26
    • 2011-05-31
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    相关资源
    最近更新 更多