在Dojo CheckBox中手动触发单击事件

时间:2014-08-03 00:58:09

标签: javascript events dom dojo

在我的应用程序中,我有这段代码:

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"

我想知道这是不是问题所在。那么......我应该为复选框点击的完整模拟编写什么?有什么指针吗?

1 个答案:

答案 0 :(得分:0)

您是否有理由不能使用change事件代替click?这应该触发用户点击和程序化更改。 (和键盘事件一样,click可能不会触发。)