更改钛中的 textField 值时未触发更改事件
Change event is not being fired when changing the textField value in titanium
我已经使用钛创建了一个用于移动网络的项目(经典)。
我创建了一个文本框。
var txtField = Ti.UI.createTextField({ id:"txtId", value:"txtValue"});
我添加了一个活动"Change"。
txtField.addEventListener('change', function(e){alert("change event fired");});
之后,当我尝试以编程方式更改该值时,例如
txtField.value = "Someothet text"
更改事件未触发。任何人都可以帮助我解决这个问题。
提前致谢,
斯瓦西
如果以编程方式更改值不会触发更改事件,您可以尝试在文本字段上手动触发它:
txtField.value = "Someothet text"
txtField.fireEvent('change');
您仍然需要在所有不同的地方调用它,但它是同一行代码。
据我所知,它只会在用户界面中修改时触发 "change" 事件。而且您还希望有一种在不触发 "change" 事件的情况下更改值的方法;-)
您写道您已经创建了一个包装器 class。然后您应该在该包装器 class 中创建一个 "setter" 函数(例如 "set" 或 "setValue")来设置该值。在 setter 中,您将设置值并触发更改事件。这样你只需要在一个地方维护更改逻辑。
HTH
/约翰
我已经使用钛创建了一个用于移动网络的项目(经典)。 我创建了一个文本框。
var txtField = Ti.UI.createTextField({ id:"txtId", value:"txtValue"});
我添加了一个活动"Change"。
txtField.addEventListener('change', function(e){alert("change event fired");});
之后,当我尝试以编程方式更改该值时,例如
txtField.value = "Someothet text"
更改事件未触发。任何人都可以帮助我解决这个问题。
提前致谢, 斯瓦西
如果以编程方式更改值不会触发更改事件,您可以尝试在文本字段上手动触发它:
txtField.value = "Someothet text"
txtField.fireEvent('change');
您仍然需要在所有不同的地方调用它,但它是同一行代码。
据我所知,它只会在用户界面中修改时触发 "change" 事件。而且您还希望有一种在不触发 "change" 事件的情况下更改值的方法;-)
您写道您已经创建了一个包装器 class。然后您应该在该包装器 class 中创建一个 "setter" 函数(例如 "set" 或 "setValue")来设置该值。在 setter 中,您将设置值并触发更改事件。这样你只需要在一个地方维护更改逻辑。
HTH
/约翰