【问题标题】:Change event is not being fired when changing the textField value in titanium更改钛中的 textField 值时不会触发更改事件
【发布时间】:2015-07-15 06:10:57
【问题描述】:

我创建了一个使用钛的移动网络项目(经典)。 我创建了一个文本字段。

var txtField = Ti.UI.createTextField({ id:"txtId", value:"txtValue"});

我添加了一个事件“更改”。

txtField.addEventListener('change', function(e){alert("change event fired");});

之后,当我尝试像

那样以编程方式更改该值时

txtField.value = "Someothet text"

没有触发更改事件。谁能帮我解决这个问题。

提前致谢, 斯瓦蒂。

【问题讨论】:

  • 不确定,但我认为只有当用户从应用程序更改文本字段中的值时才会触发更改事件;也许当您为文本字段分配一些值时,您可以调用您想要在更改事件上触发的相同方法。
  • 感谢您的回复。但是,在这里我创建了一个包装类来创建一个具有其他一些功能的文本字段,当它的值发生变化时,我不可能调用一个方法(将在更多地方发生变化)是否有任何其他替代方法,比如创建自定义活动还是别的什么?

标签: titanium titanium-mobile appcelerator appcelerator-mobile


【解决方案1】:

据我所知,它只会在用户界面中修改时触发“更改”事件。而且您还希望有一种方法可以在不触发“更改”事件的情况下更改值;-)

您写道,您已经创建了一个包装类。然后你应该在该包装类中创建一个“setter”函数(例如“set”或“setValue”)来设置值。在设置器中,您将设置值并触发更改事件。这样,您只需在一个地方维护更改逻辑。

HTH

/约翰

【讨论】:

    【解决方案2】:

    如果以编程方式更改值不会触发更改事件,您可以尝试在文本字段上手动触发它:

    txtField.value = "Someothet text"
    txtField.fireEvent('change');
    

    您仍然需要在所有不同的地方调用它,但它是同一行代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      相关资源
      最近更新 更多