2

我正在制作一个非常简单的 Ember APP。为了我自己的理智,我更喜欢在 EmberViews 中通过 jQuery 执行必要的动画和简单的 dom 事件,例如鼠标悬停/单击。

假设我有这个:

App.SomeView = Ember.View.extend({

     didInsertElement:function(){
       this.$(element).hover(function(){
                 $(anotherElement).toggle();
       });
     }

});

我的模板是这样的:

<script type="text/javascript" data-template-name="routeName">
   {{#view SomeView}}
      <button {{action 'something' this}}>    </button>
      <element></element>
       {{#if condition}}
        <anotherElement></anotherElement> 
       {{/if}}
  {{/view}}
</script>

我的控制器相应地支持这样的动作“某事”:

App.SomeController = Ember.Controller.extend({
  condition:false,
  actions:{
    something:function(){
      this.set('condition',true);
    }
  }
});

一切都很好,但我想要“某事”操作做的是在我的视图中触发“ didInsertElement ”事件,以便切换“ anotherElement”可见性,而无需我再次写下该代码。

这有道理吗?我尝试使用'observables',但无法让它们工作。

或者,如果有更好的方法来做到这一点,这些也是受欢迎的。

4

1 回答 1

4

您可以在视图中定义执行所需操作的操作,并将操作的目标指定为视图。

<button {{action 'something' target="view"}}></button>

在你看来,

App.SomeView = Ember.View.extend({
  ...

  actions: {
    'something': function() {
      // Do whatever you want.     
    }
  }
});
于 2013-11-28T02:39:17.683 回答