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」の可視性が切り替えられるようにすることです。

これは意味がありますか?「オブザーバブル」を使用してみましたが、機能させることができませんでした。

あるいは、これを行うためのより良い方法があれば、それも歓迎します。

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 に答える