在Ember的自定义事件中传递参数(通过View层次结构冒泡)?

时间:2012-12-09 14:27:53

标签: ember.js

在使用我发现的here的Ember自定义事件时,我无法找到传递参数的方法。 我更愿意避免以“父母”为目标的解决方案。特别是观点,例如this one,因为我们失去了"冒泡"。

我的用法如下

plugins.js

Em.Object.reopen({
    triggerEvent: function (eventName) {
        this.$().trigger(eventName, this);
    }
});

MyView.js

  

点击:function(){

   this.triggerEvent('stepClicked'); 
     

}

Ember(0.96+)中的代码表明,传递额外的参数被认为是经理,不会传递

rootElement.delegate('.ember-view', event + '.ember', function(evt, triggeringManager) {
    ...
    if (manager && manager !== triggeringManager) {
          result = self._dispatchEvent(manager, evt, eventName, view);
    } else if (view) {
          result = self._bubbleEvent(view,evt,eventName);
     }

提前非常感谢,
奥伦鲁宾

1 个答案:

答案 0 :(得分:0)

您可以传递一个事件对象,该对象将告诉您点击了哪个元素:

click: function(event){     
  // will be called when when an instance's     
  // rendered element is clicked
  console.log("element clicked: " + this.get('elementId') );
  return false; // return true if you want the click event to bubble up to parent view (default it true)
}

我认为更好的方法是在模板中使用{{action}}。请查看this answer示例。