在我的应用程序中,我有这段代码:
postCreate: function(){
// ...
// Change the listWidget's order depending on whether the checkbox is
// ticked or not
self.extraWidget.orderByNameWidget.on( 'click', function( e ){
var orderByNameWidget = this;
field = orderByNameWidget.get('value') ? 'firstName' : 'lastName';
// Make up the collection with the initial filters
var collection = self.store;
if( self.initialFilter ) collection = collection.filter( self.initialFilter );
collection = collection.sort( field );
self.listWidget.set('collection', collection);
});
此代码存在,以便用户可以单击复选框(orderByNameWidget),并更改联系人的排序。 orderByNameWidget是一个普通的Dojo CheckBox。
现在,我有一个全局设置,应该从该值开始。处理它的更简洁的方法是设置复选框的值,然后触发事件:
// Artificially emit the initial click if the default says so
if( ConfigVars.workspacesUsersInfo.orderByNameDefault ){
self.extraWidget.orderByNameWidget.set( 'value', true );
self.extraWidget.orderByNameWidget.emit( 'click', { bubbles: true, cancelable: true });
}
虽然第一行有效(设置小部件),但第二行没有 - 点击'事件永远不会为小部件实际触发。
我尝试了每一个可能的组合,在domNode上发出了这个事件等等 - 但不,它似乎并不想做任何事情。 在Button.html,CheckBox的基础上,Dojo有:
data-dojo-attach-event="ondijitclick:__onClick"
我想知道这是不是问题所在。那么......我应该为复选框点击的完整模拟编写什么?有什么指针吗?
答案 0 :(得分:0)
您是否有理由不能使用change
事件代替click
?这应该触发用户点击和程序化更改。 (和键盘事件一样,click
可能不会触发。)